在弹性搜索PHP包中使用“And”运算符进行搜索

我正在尝试在php作曲家包的帮助下学习。我有一个名称包含,字段。我想有基于上述字段的过滤器,它应该在运算符中。我目前的查询代码是:Elastic Searchindexmedia_datanits_accountnits_urlsession_idtimestampand


$items = $this->elasticsearch->search([

    'index' => $index_name,

    'body'  => [

        'query' => [

            'filtered' => [

                'filter' => [

                    'and' => [

                        ['match' => ['nits_account' => 'xyzABCD2190-aldsj']],  //API Key

                        ['match' => ['nits_url' => 'google.com']],

                    ]

                ]

            ]

        ]

    ]

]);

我的问题:


我无法获取数据。但是如果我做下面的代码:


$items = $this->elasticsearch->search([

    'index' => $index_name,

    'body'  => [

        'query' => [

             'bool' => [

                'should' => [

                    ['match' => ['nits_account' => $account] ],

                    ['match' => ['nits_url' => $domain] ],

                ],

            ], 

        ]

    ]

]);

我在运算符中获取值,但需要在其中具有操作。orand


我怎么能有不同的搜索操作与各自的字段,我的意思是我想有字段是完全匹配的,我想有喜欢/通配符操作,时间戳应该是可比的(大于/小于/在两个日期之间)。nits_accountnits_url

菲律宾比索

弹性搜索

elasticsearch-php


眼眸繁星
浏览 94回答 1
1回答

largeQ

试试这个:$items = $this->elasticsearch->search([    'index' => $index_name,    'body'  => [        'query' => [             'bool' => [                'must' => [                    ['match' => ['nits_account' => $account] ],                    ['match' => ['nits_url' => $domain] ]                ],            ],         ]    ]]);您应该使用关键字,而不是关键字。 行为类似于 AND 操作,而作用类似于 OR 操作。mustshouldmustshould请参阅此 https://stackoverflow.com/a/28768600/5430055如果需要使用条件匹配,请使用如下内容:"query": {    "bool": {      "must": [        {          "range": {            "nits_url": {              "gte": 1000,              "lte": 10000            }          }        },        {          "match": {            "nits_account": "$account"          }        }      ]    }  }
打开App,查看更多内容
随时随地看视频慕课网APP