首页 > 解决方案 > 如何在elasticsearch脚本中将字段与_id进行比较?

问题描述

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

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

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

在普通文档中,“ _ stringid”和“id”是long,但我打破了一些,现在它们都是strings,我怎么能找到它们?

标签: elasticsearchelasticsearch-painless

解决方案


我认为您的id字段类型是关键字,所以;你不能doc['id'].value没有.keyword.

试试这个:

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

推荐阅读