【问题标题】:Difference between elasticsearch querieselasticsearch查询之间的区别
【发布时间】:2019-06-08 19:51:59
【问题描述】:

我很难弄清楚为什么这两个查询没有返回相同数量的结果(我使用的是 elasticsearch 2.4.1):

{
  "nested": {
    "path": "details",
    "filter": [
      { "match": { "details.id": "color" } },
      { "match": { "details.value_str": "red" } }
    ]
  }
}
{
  "nested": {
    "path": "details",
    "filter": {
      "bool": {
        "must": [
          { "match": { "details.id": "color" } },
          { "match": { "details.value_str": "red" } }
        ]
      }
    }
  }
}

第一个查询有更多结果。

我的猜测是第一个查询中的 filter 子句的工作方式类似于 or/should,但如果我将第二个查询中的 must 替换为 should,则查询会产生结果比这两个要多。

这些查询的含义有何不同?

恐怕我对索引文档的结构一无所知;我只知道每个查询返回多少行。

【问题讨论】:

    标签: elasticsearch elasticsearch-2.4


    【解决方案1】:

    第一个查询是错误的,嵌套的filter不能是一个数组,所以我怀疑ES没有正确解析它,只需要一个匹配而不是两个,这可能是它返回的数据比第二个多的原因.

    第二个查询在嵌套过滤器方面是正确的,并且完全符合您的预期。

    【讨论】:

    • 哦,你是对的,在第一个查询中,只有第二个match 生效;感谢您的帮助!
    • 酷,很高兴它有帮助!
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2022-12-15
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多