当我执行通配符查询时,得到的结果与插入顺序的顺序不同。例如, 假设我在“名称”字段Pamela,Patricia,Pandora,Paige中插入了4个项目。
并使用“ P *”进行通配符查询。我收到的结果是Patricia,Pamela,Paige,Pandora。 有什么办法可以使我获得与插入顺序相同的结果。 预期输出应为Pamela,Patricia,Pandora,Paige。 结果的顺序也因机器而异。
我正在使用弹性搜索版本2.4。我想在同一版本上执行此操作,因为它已经投入生产。
答案 0 :(得分:3)
在创建索引时,您必须添加时间戳映射,您可以使用以下查询来实现
PUT my_index
{
"mappings": {
"my_type": {
"_timestamp": {
"enabled": true
}
}
}
}
此后,您可以使用以下时间戳查询
GET my_index/_search
{
"query": {
"wildcard": {
"fieldName": "P*"
}
},
"sort": [
{
"_timestamp": {
"order": "asc"
}
}
]
}
注意:此_timestamp在elasticsearch的最新版本中已被弃用,并且已删除,如果您有任何计划升级Elasticsearch,则应在索引时添加新的字段时间戳并对其进行更新,并应对该字段进行排序。