`zero_terms_query`与`must` elasticsearch

时间:2018-06-04 09:48:03

标签: elasticsearch

我正在尝试查询名为index的字段。此字段位于文档正文中,是_index属性的副本。此字段可以包含2个值(保留2个索引)

  • “候选”
  • “clientcontacts”

用户可能可能不会选择指定要搜索的索引。因此,目标索引设置为_all。如果用户确实指定了索引,则仅返回该索引的结果。如果未指定,将返回所有索引的结果。

这是我当前的查询:

{
    "index": "_all",
    "body": {
        "query": {
            "bool": {
                "should": [
                    {
                        "query_string": {
                            "query": "henry candidate"
                         }
                    }
                ],
                "must": [
                    { 
                        "match": {
                            "index": {
                                "query": "henry candidate",
                                "minimum_should_match": 1,
                                "fuzziness": 2,
                                "zero_terms_query": "all"
                            }
                        }
                    }
                ]
            }
        }
    }
}

我试图通过几种方式实现这一点。我尝试将匹配项放在should中但仍返回其他索引(“clientcontacts”)的结果。我尝试使用查询字符串查询实现它并进行查询(henry) OR (candidates)并且还返回所有索引(我也不认为我可以在这里使用zero_terms_query

根据我的理解,zero_terms_query匹配所有内容,如果找不到匹配的查询。但是,我不确定如何使用must

修改

阅读filter,似乎这就是我想要的效果,因为我对这个查询的评分并不感到困惑,但是我必须允许使用拼写错误(因此{{1} }属性)。据我所知,fuzziness仅匹配完全匹配,这是term使用的属性。有什么我在这里可以忽略或者filter不能使用吗?

0 个答案:

没有答案