我使用elasticsearch 2.2
我有一些索引类似的文件:
{
"id": 2116,
"brand": "The Brand 1",
"reference": "OI444",
"supplier": "My supplier 1"
},
{
"id": 2118,
"brand": "The Brand",
"reference": "OI44488",
"supplier": "My supplier"
}
我如何请求索引获取按id列表排序的查询,此查询有效,但以其他顺序返回结果。
{
"query": {
"bool": {
"filter": {
"ids": {
"values": [
2118, 2116
]
}
}
}
}
}
在我的情况下,我的id列表可以是随机的,如216,105,208,我需要在结果集中遵守此顺序
答案 0 :(得分:1)
查询
POST c1_2/Test/_search/
{
"sort": [
{
"_script": {
"script": "doc['id'] != null ? sortOrder.indexOf(doc['id'].value.toInteger()) : 0",
"type": "number",
"params": {
"sortOrder": [
2116,
211
]
},
"order": "desc"
}
},
"_score"
],
"query": {
"bool": {
"should": [
{
"terms": {
"brand": [
"The"
]
}
},
{
"ids": {
"values": [
2118,
2116,
211
]
}
}
]
}
}
}