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

and*_*amm 5 elasticsearch

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

"field_a": {
    "type": "float"
},
"field_b": {
    "type": "float"
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到所有field_a匹配值的文件field_b?这是否可以禁用脚本?

Alc*_*zar 5

基本上你需要一个脚本来完成它——即使禁用脚本也可能有效,因为 lucene 表达式是完全沙箱化的:

GET /index/_search
{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [
            {
              "script": {
                "lang": "expression",
                "script": "doc['field_a'].value == doc['field_b'].value"
              }
            }
          ]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)