如何使用id数组从Index中获取数据,文档应该按照数组中提供的相同顺序提取.使用弹性搜索7.13



我想以相同的顺序获取所有这些数据,无论值数组中的顺序如何

{
"query": {
"ids": {
"values": [
"BqQI7ncBXJtfdGR-NWLA",
"P6QAX3gBXJtfdGR-oWLL",
"NKSJP3gBXJtfdGR-vWIY",
"PqT-XXgBXJtfdGR-O2Kg"
]
}
}
}

您需要使用一个函数_核心

函数_score允许您修改查询检索到的文档的分数。例如,如果分数函数的计算成本很高,并且足以计算过滤后的文档集的分数,那么这可能很有用。

查询

{
"query": {
"function_score": {
"query": {
"ids": {
"values": [
"BqQI7ncBXJtfdGR-NWLA",
"P6QAX3gBXJtfdGR-oWLL",
"NKSJP3gBXJtfdGR-vWIY",
"PqT-XXgBXJtfdGR-O2Kg"
]
}
},
"script_score": {
"script": {
"source": """
def count = params.ids.size();
def id    = doc['_id'].value;
for (int i = 0; i < count; i++) {
if (id == params.ids[i]) { return count - i; }
}
""",
"params": {
"ids": [
"BqQI7ncBXJtfdGR-NWLA",
"P6QAX3gBXJtfdGR-oWLL",
"NKSJP3gBXJtfdGR-vWIY",
"PqT-XXgBXJtfdGR-O2Kg"
]
}
}
}
}
},
"size": 10,
"from": 0
}

最新更新