Elastic 2.4通配符查询结果顺序与插入顺序不同

时间:2018-06-25 08:06:23

标签: elasticsearch

当我执行通配符查询时,得到的结果与插入顺序的顺序不同。例如, 假设我在“名称”字段Pamela,Patricia,Pandora,Paige中插入了4个项目。

并使用“ P *”进行通配符查询。我收到的结果是Patricia,Pamela,Paige,Pandora。 有什么办法可以使我获得与插入顺序相同的结果。 预期输出应为Pamela,Patricia,Pandora,Paige。 结果的顺序也因机器而异。

我正在使用弹性搜索版本2.4。我想在同一版本上执行此操作,因为它已经投入生产。

1 个答案:

答案 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,则应在索引时添加新的字段时间戳并对其进行更新,并应对该字段进行排序。