douweng1935 2018-10-10 13:17
浏览 65
已采纳

搜索两个过滤器与Elasticsearch匹配的位置

I am doing a search with elasticSearch but I would like to filter it and the search must match both filters.

this is the code:

"query" => [
                            "bool" => [
                                "must" => [
                                    'multi_match'=> [
                                        'query'=> $this->input->get('search'),
                                        'fields'=> ["title^2", "description"]
                                    ]
                                ],
                                "filter" => [
                                    "terms" => [ 
                                        "Categories" => ['Featured Works']
                                    ],
                                    "terms" => [
                                        "Tags" => ['Merida']
                                    ]
                                ]
                            ]
                        ]

Bring the search results but take the filter as an OR and I would like an AND

  • 写回答

1条回答 默认 最新

  • dongxiong2000 2018-10-10 13:21
    关注

    The problem lies in how you define your terms filter in a PHP associative array. Since both have the same keys, only one will end up in your query. Do it like this instead:

                                "filter" => [
                                   [
                                     "terms" => [ 
                                        "Categories" => ['Featured Works']
                                     ]
                                   ],
                                   [
                                     "terms" => [
                                        "Tags" => ['Merida']
                                     ]
                                   ]
                                ]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?