【问题标题】:Elastic Search "and" operator with multiple values具有多个值的弹性搜索“and”运算符
【发布时间】:2016-04-03 21:38:30
【问题描述】:

我正在使用弹性搜索 2.2 版本并使用以下查询 DSL:

{
  "query": {
    "match": {
      "product": {
        "query": "Razor 2004",
        "operator": "and"
      }
    }
  }
}

以下查询的输出将能够获取其中包含 Razor 和 2004 的所有产品。 因此,例如以下搜索字符串结果将是有效的:

"I am using Razor built in  2004"
"Razor 2004 is great"

但是下面的搜索字符串结果会是无效的

"I am using Razor built in  2005"
"Razor is great"

该查询适用于一个搜索输入,但我如何修改多个值的查询,例如

{
      "query": {
        "match": {
          "product": {
            "query": "Razor 2004","Shave 2015"
            "operator": "and"
          }
        }
      }
    }

现在我正在寻找字符串中存在“Razor”和“2004”或“Shave”和“2015”的字符串。 我尝试了 bool 查询,但无法让“and”like 搜索工作。我的 bool 查询如下所示:

{
          "query": {
              "query": {
                  "bool": {
                      "should": [
                          {
                              "match": {
                                  "product": "Razor 2004"
                              }
                          },
                          {
                              "match": {
                                  "product": "Shave 2015"
                              }
                          }
                      ]
                  }
              }
          }
      }

有没有办法在具有多个 IN 值的字符串中提供类似“和”的搜索?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您只需将匹配查询中的组合运算符指定为 AND。匹配查询的默认值为 OR。

      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "product": {
                  "query": "Razor 2004",
                  "operator": "and"
                }
              }
            },
            {
              "match": {
                "product": {
                  "query": "Shave 2015",
                  "operator": "and"
                }
              }
            }
          ]
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2016-03-28
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多