一尘不染

如何查找一个字段的值与另一个字段的值匹配的所有文档

elasticsearch

我在具有以下映射的文档中有两个字段:

"field_a": {
    "type": "float"
},
"field_b": {
    "type": "float"
}

我如何找到所有field_a与匹配的文档field_b?禁用脚本是否有可能?


阅读 297

收藏
2020-06-22

共1个答案

一尘不染

基本上,您需要使用脚本来执行此操作-即使由于完全将沙盒化了Lucene表达式而禁用了脚本,这也可能会起作用:

GET /index/_search
{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [
            {
              "script": {
                "lang": "expression",
                "script": "doc['field_a'].value == doc['field_b'].value"
              }
            }
          ]
        }
      }
    }
  }
}
2020-06-22