我有这样的记录:
// tags vary in order within array
{
name : 'Karl',
tags : [
'java',
'html',
'javascript'
]
},
{
name : 'John',
tags : [
'html',
'java',
'javascript'
]
}
我在标签上运行bool查询:
"query" : {
"bool" : {
"must" : [
{
"term" : "java"
}
]
}
}
我希望Karl成为第一个搜索结果,因为'java'在他的标签数组中的索引较低。不幸的是我的查询并不关心索引,总体结果还可以,但结果的顺序似乎是随机的。
如何强制Elasticsearch考虑数组索引?
THX!
答案 0 :(得分:0)
如果您需要此信息,那么您将必须存储该元素中每个元素的索引:
{
name : 'Karl',
tags : [
'java',
'html',
'javascript'
],
index : 0
},
{
name : 'John',
tags : [
'html',
'java',
'javascript'
],
index : 1
}
然后你可以对这个索引子字段进行排序:
"query" : {
"bool" : {
"must" : [
{
"term" : "java"
}
]
},
"sort" : [
"arrayFieldName.index" : "asc"
]
}