Elasticsearch查询中没用的部分

时间:2014-11-08 13:55:15

标签: elasticsearch query-optimization

我有一个生成 Elasticsearch 查询的通用代码。

Elasticsearch 查询中有无用的部分会导致性能下降:

在此示例中,空"bool" : {}部分

{
  "post_filter": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "term": {
                  "a": "a"
                }
              },
              {
                "term": {
                  "b": "b"
                }
              }
            ]
          }
        },
        {
          "bool": {}
        }
      ]
    }
  }
}

因为它可以在没有must且只有一个should

的情况下编写
"post_filter": {
  "bool": {
    "should": {
      …
    }
  }
}

或另一个例子:

"post_filter": {
  "term": {
    "a": "a"
  }
}

的性能相当
"post_filter": {
  "bool": {
    "must": {
      "term": {
        "a": "a"
      }
    }
  }
}

我想是的,但是有人可以确认吗?

1 个答案:

答案 0 :(得分:0)

测量ES使用两个版本的代码返回结果所花费的时间,并自行决定。根据我的经验,这根本不重要。只要你的ES查询生成代码干净简单,就要坚持下去。