Sorting 弹性搜索排序未按预期工作
我正在使用弹性搜索版本1.2.1,并试图在整数字段上对结果进行排序,但它的工作方式与我认为的不一样,我无法按asc或desc顺序进行排序。我正在本地主机上使用Chrome的Sense扩展和Elastic search侦听端口9200 下面是我如何定义索引的:Sorting 弹性搜索排序未按预期工作,sorting,elasticsearch,integer,Sorting,elasticsearch,Integer,我正在使用弹性搜索版本1.2.1,并试图在整数字段上对结果进行排序,但它的工作方式与我认为的不一样,我无法按asc或desc顺序进行排序。我正在本地主机上使用Chrome的Sense扩展和Elastic search侦听端口9200 下面是我如何定义索引的: PUT keyword_test 然后我添加了关键字_测试索引的映射: PUT /keyword_test/_mapping/keyword { "keyword": { "properties" : {
PUT keyword_test
然后我添加了关键字_测试索引的映射:
PUT /keyword_test/_mapping/keyword
{
"keyword": {
"properties" : {
"id": {
"type": "string"
},
"search_date": {
"type": "string"
},
"keyword": {
"type": "string",
"index": "analyzed"
},
"count": {
"type": "integer"
}
}
}
}
然后,我添加了不同计数的不同关键字,并尝试使用以下查询在它们之间进行搜索:
GET _search
{
"sort": {
"count": {
"order": "asc",
"ignore_unmapped": true
}
},
"query": {
"fuzzy": {
"keyword": "iphone"
}
}
}
我得到的结果如下:
"hits": {
"total": 3,
"max_score": null,
"hits": [
{
"_index": "keyword_test",
"_type": "keyword",
"_id": "8",
"_score": null,
"_source": {
"id": 8,
"count": 9000,
"keyword": "iphone 5s",
"search_date": "2015-05-05"
},
"sort": [
9000
]
},
{
"_index": "keyword_test",
"_type": "keyword",
"_id": "10",
"_score": null,
"_source": {
"id": 10,
"count": 9500,
"keyword": "iphone 6 plus",
"search_date": "2015-05-05"
},
"sort": [
9500
]
},
{
"_index": "keyword_test",
"_type": "keyword",
"_id": "9",
"_score": null,
"_source": {
"id": 9,
"count": 9100,
"keyword": "iphone 6",
"search_date": "2015-05-05"
},
"sort": [
9100
]
}
]
}
结果应该是9000、9100、9500顺序,但它是9000、9500、9100顺序。如果删除忽略未映射的,我也会得到SearchParseException。我该怎么办?我是否缺少计数字段的映射?任何帮助都将不胜感激,谢谢。建议:您可以重复这个过程并检查一下,因为我自己在本地系统上尝试过这个方法。它的工作,因为它是预期的工作。对我来说,结果是好的。谢谢你的评论。我尝试了同样的场景,又得到了同样的结果。顺便说一下,我使用的是1.2.1版本,您是否使用相同的版本并得到正确的结果?我的ES版本是1.4。5@BurakA.thesearchparseexception很可能是因为搜索跨越集群中的所有索引,如果更改为索引特定的搜索获取关键字\u test/\u search并删除忽略\u unmapping,则应停止获取异常。我仍然不知道为什么你会得到奇怪的结果,在1.2中对我有效。1@AkashYadav我认为1.2.1和1.4.5之间可能存在差异。我也会尝试1.4.5,但我需要让它适用于1.2.1,因为它在我们的生产服务器中使用。