我正在尝试_update_by_query
,以便在排序搜索中对项目进行排序。是否可以在脚本中获得文档的当前“索引”?
例如
创建索引:
PUT test
{
"mappings" : {
"person" : {
"properties" : {
"score" : { "type" : "integer" },
"rank" : { "type" : "integer" }
}
}
}
}
添加文档:
POST /test/person/1
{
"score": 100,
"rank": 0
}
POST /test/person/2
{
"score": 200,
"rank": 0
}
运行_update_by_query
:
POST /test/_update_by_query
{
"script": {
"source": "ctx._source.rank=3", // how to get document "index" in sort here?
"lang": "painless"
},
"sort": { "score": "desc" }
}
按升序排序时的结果应
score: 200, rank: 1
score: 100, rank: 2
1条答案
按热度按时间wi3ka0sx1#
看起来您正在尝试更新单个文档。对于这种情况,_update API将是更合适的选择。例如:
在上面的例子中,您可以看到文档ID被提供给只更新该文档的API。
相反,_update_by_query API会对索引中的每个文档执行更新,因此,如果您需要基于脚本更新多个文档,这将是您的选择。
希望能帮上忙...