考虑一下Elasticsearch查询中的每个单词

时间:2019-02-06 21:52:46

标签: elasticsearch

考虑以下短语:lorem ipsum quid

我想查询多个字段,并且更喜欢所有单词都出现的答案。换句话说,我不想忽略某些单词,我想增强考虑所有单词的查询。

我可以通过执行simple_query_string并在每个单词之前添加+来实现此目标:

query: {
  simple_query_string: {
    query: "lorem +ipsum +quid",
    default_operator: "and",
    fields: ["f1", "f2", "f3"]
  }
}

看起来还是很奇怪,它迫使我编辑用户查询并通过正则表达式用+替换空格,这是一种修补。

elasticsearch是否有一种方法可以强制(在匹配或multi_match或我不知道的事情中)考虑每个单词?

1 个答案:

答案 0 :(得分:1)

不确定这是否能完成您的工作,但可以尝试在term内部must

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "f1": "lorem ipsum quid"
          }
        },
        {
          "term": {
            "f2": "lorem ipsum quid"
          }
        },
       {
          "term": {
            "f3": "lorem ipsum quid"
          }
        }
      ]
    }
  }
}