gpt4 book ai didi

java - Elasticsearch排序-未获得预期结果

转载 作者:行者123 更新时间:2023-12-01 14:16:58 25 4
gpt4 key购买 nike

我的 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"
]
}
]

关于java - Elasticsearch排序-未获得预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62016284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com