我正在使用弹性搜索版本1.2.1并尝试在整数字段上对结果进行排序,但它不按照我认为必须的方式工作,并且我无法按asc或desc顺序排序。我正在使用Sense扩展的Chrome和Elastic搜索在localhost上侦听端口9200。
这是我如何定义索引:
PUT keyword_test
然后我添加了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订单。如果我删除ignore_unmapped,我也会得到SearchParseException。我该怎么办?我错过了计数字段的一些映射吗?任何帮助将不胜感激,谢谢。