我的 flex 字段名称中的数据为“Amit 111”,“amit 111”,“Amit 222”。
我正在尝试使用以下方法对其进行排序:
searchSourceBuilder.query(query).sort("name.keyword", SortOrder.ASC)
它返回结果为:
“Amit 111”,“Amit 222”,“Amit 111”
但我希望结果为:
“Amit 111”,“Amit 111”,“Amit 222”
请帮忙。
最佳答案
另一种方法是使用fielddata作为text
字段,您可以在链接的URL上应用排序和更多详细信息。
需要为其更改Java代码之后显示的索引映射的Java代码。
searchSourceBuilder.query(query).sort("name", SortOrder.ASC)
创建在
name
字段上启用了字段数据的索引{
"mappings": {
"properties": {
"name": {
"type": "text",
"fielddata": true
}
}
}
}
索引示例文件
{
"name" : "amit 111"
}
{
"name" : "Amit 111"
}
{
"name" : "Amit 222"
}
您在
name
字段上排序的搜索查询{
"sort": [
{
"name": "asc"
}
]
}
结果
"hits": [
{
"_index": "key",
"_type": "_doc",
"_id": "1",
"_score": null,
"_source": {
"name": "amit 111"
},
"sort": [
"111"
]
},
{
"_index": "key",
"_type": "_doc",
"_id": "2",
"_score": null,
"_source": {
"name": "Amit 111"
},
"sort": [
"111"
]
},
{
"_index": "key",
"_type": "_doc",
"_id": "3",
"_score": null,
"_source": {
"name": "Amit 222"
},
"sort": [
"222"
]
}
]