如何在 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"
}
}
{
"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"
}
}