如何在 elasticsearch 脚本中将字段与 _id 进行比较?

How to compare field with _id in elasticsearch script?

{
   "query":{
      "bool":{
         "must":{
            "match_all":{

            }
         },
         "filter":[
            {
               "script":{
                  "source":"doc['id'].value == doc['_id'].value",
                  "lang":"painless"
               }
            }
         ]
      }
   },
   "track_total_hits":true
}

所以 doc['_id'].value 是导致错误的行。我应该如何将字段值与 _id 值进行比较?

在正常文件中“_id”是string,"id"是long,但我打碎了一些,现在它们都是strings,我怎么能找到他们了吗?

我认为你的 id 字段类型是 keyword,所以;你不能在没有 .keyword 的情况下调用 doc['id'].value

试试这个:

"script": {
    "script": {
        "source": "doc['id.keyword'].value == doc['_id'].value",
        "lang": "painless"
    }
}