代码之家  ›  专栏  ›  技术社区  ›  rap-2-h

考虑elasticsearch查询中的每个单词

  •  0
  • rap-2-h  · 技术社区  · 6 年前

    想想这句话: lorem ipsum quid .

    我想查询多个字段,更喜欢所有单词都存在的答案。换言之,我不想忽略一些单词,我想增加考虑所有单词的查询。

    我可以通过做一个 simple_query_string 加上 + 每句话之前:

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

    不过,这看起来很奇怪,它迫使我编辑用户查询,并通过regex将空格替换为 + ,这是一种修补。

    弹性搜索有没有办法强迫(在匹配或多匹配或其他我不知道的东西)考虑每个单词?

    1 回复  |  直到 6 年前
        1
  •  1
  •   A l w a y s S u n n y    5 年前

    不确定这是否能完成你的工作,但是这样试试- term 里面 must

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