我可以在elasticsearch查询中引用文档本身吗?

时间:2015-09-02 23:30:02

标签: elasticsearch

我想获得fieldA的值大于fieldB值的所有文档。最有效的方法是什么?

有点像这样:

body: {
  query: {
    bool: {
      must: {
        range: {
          "fieldA": { gt: "this.fieldB" }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

最有效的方法是将fieldC索引为fieldA - filedB并使用范围过滤器查找fieldC大于0的所有记录。如果true大于fieldA,则它也可以是fieldB的布尔字段,否则为false

如果无法重新编制索引,则可以使用script filter执行此检查,但这实际上意味着每次搜索都会进行完整的索引扫描,因此无法进行扩展。