Elasticsearch最新排序技巧揭秘
创作时间:
作者:
@小白创作中心
Elasticsearch最新排序技巧揭秘
引用
CSDN
等
6
来源
1.
https://blog.csdn.net/qq_50790981/article/details/140080792
2.
https://elastic.ac.cn/guide/en/elasticsearch/reference/current/index-modules-index-sorting.html
3.
https://www.elastic.co/guide/en/elasticsearch/reference/current/documents-indices.html
4.
https://www.bookstack.cn/read/elasticsearch-7.17-en/a83ef7e8b0a61ee2.md
5.
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
6.
https://www.elastic.co/guide/en/elasticsearch/reference/current/es-ingestion-overview.html
在Elasticsearch中,keyword类型的字段主要用于精确匹配和聚合操作,虽然它不直接支持数值范围查询,但可以用于排序。以下是如何对keyword类型字段进行排序的方法:
对单值keyword字段排序
如果keyword字段只包含单一值,你可以直接在搜索请求中使用sort参数对其进行排序:
GET /my_index/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"my_keyword_field": {
"order": "asc" // 或 "desc"
}
}
]
}
对多值keyword字段排序
当keyword字段包含多个值时,需要指定如何选择一个值来进行排序。这可以通过mode参数实现,常见的模式有min、max、avg等:
GET /my_index/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"my_keyword_field": {
"order": "asc",
"mode": "min" // 可选:min, max, avg 等
}
}
]
}
数字格式的keyword字段排序
即使keyword字段存储的是数字(如ID),也可以按上述方法进行排序。但由于其内部以字符串形式存储,可能会导致自然顺序问题(例如,“10”会在“2”之前)。为避免这种情况,可以在索引映射中将该字段同时定义为long和keyword类型:
PUT /my_index
{
"mappings": {
"properties": {
"numeric_keyword_field": {
"type": "keyword",
"fields": {
"as_long": {
"type": "long"
}
}
}
}
}
}
然后通过numeric_keyword_field.as_long进行排序。
总结来说,尽管keyword类型主要用于文本数据,但通过合理配置和灵活运用排序选项,同样能够满足对数字或复杂值的排序需求。
热门推荐
免签政策后,韩国年轻人爱上青岛啤酒博物馆
青岛啤酒博物馆:百年历史与现代创新的完美融合
青岛啤酒博物馆:百年德式建筑里的啤酒传奇
呼伦贝尔大草原&莫日格勒河:绝美摄影打卡地!
跟着内蒙小林玩转10日游!
内蒙古冬日仙境:响沙湾&呼伦贝尔大草原
探秘内蒙古博物院:《天骄蒙古》展览全攻略
呼伦贝尔大草原:打卡最美草原,体验蒙古风情!
武汉物业费大跳水,业主喜迎优惠潮
网络算命按分钟收费,玄学博主如何在线敛财?
手把手教你写出对仗工整的春联
春节倒计时!你家啥时候贴春联?
潮汕美食探店:牛肉火锅&砂锅粥大比拼!
汕头英歌舞:千年传承的独特魅力
南澳岛青澳湾:广东最美海滩的度假天堂
春节来武汉怎么玩?汉口游玩攻略mark一下!
汉中寻味:入冬四日游,美食与文化的交响
别和青春期的孩子较劲,与他们相处,父母做好4件事
“烂尾娃”是个什么梗?如何避免自家孩子掉入“烂尾娃”的坑?
中医康复训练:腰肌劳损的科学治疗方案
秋冬腰疼?试试杜仲威灵仙!
针灸疗法:中医治腰肌劳损的新趋势
杜传太医生教你中医缓解腰肌劳损
阿尔山国家森林公园:内蒙古最美秋拍地
呼伦贝尔秋游打卡:内蒙古7日游
呼伦贝尔大草原:内蒙古必打卡的自然奇观
打卡呼和诺尔:亲身体验蒙古风情
腊月二十六“杀猪割年肉”,六道传统猪肉菜,六六大顺迎新年
职场上,体质较弱的人如何保持竞争力?
五花肉新吃法:红烧肉的创新与改良