如何在查询中包装ElasticSearch过滤器

时间:2014-02-19 15:01:43

标签: elasticsearch

为了在ElasticSearch中使用percolator,我需要索引搜索查询。但是,我们主要使用过滤器进行搜索。要为这些过滤器编制索引,它们必须为wrapped inside a query

我知道有两种不同的方法可以实现这一目标。将过滤器包裹在filtered query

{
  "query": {
    "filtered": {
      "filter": { ... }
    }
  }
}

或使用constant_score query

{
  "query": {
    "constant_score": {
      "filter": { ... }
    }
  }
}

首选哪种方法?为什么呢?

2 个答案:

答案 0 :(得分:2)

虽然两者都会产生相同的结果,并且性能非常接近,但我更倾向于使用filtered - 查询。它非常清楚地传达了意图。几个月后,你可能会从同一个问题开始,并想知道为什么你关心分数。 :)

答案 1 :(得分:0)

根据此link,"带有match_all查询的过滤查询会自动在内部转换为constant_score one"。所以听起来最好的选择是使用constant_score并省略内部步骤。