当前位置: 首页 > news >正文

elasticsearch学习笔记(二十九)——Elasticsearch 将一个field索引两次来解决字符串排序问题

下面描述一个场景

如果某个字段的类型是text,在创建索引的时候,针对每个document,对应的这个text字段都会对内容进行分词。由于ES不允许对已经存在的field的类型进行修改,就会导致该字段一直都是会被分词,那么如果之后有需求想对该字段排序,就不行了。具体看下面展示的示例。

PUT /test_index { "mappings": { "properties": { "field1": { "type": "text" } } } } GET /test_index/_search { "query": { "match_all": {} }, "sort": [ { "field1": { "order": "desc" } } ] } { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } ], "type": "search_phase_execution_exception", "reason": "all shards failed", "phase": "query", "grouped": true, "failed_shards": [ { "shard": 0, "index": "test_index", "node": "P-b-TEvyQOylMyEcMEhApQ", "reason": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } } ], "caused_by": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.", "caused_by": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } } }, "status": 400 }

这个时候要想解决这个问题,就可以将一个string field建立两次索引,一个分词用来搜索,一个不分词用来进行排序。
Alternatively use a keyword field instead.
根据错误中的提示,我们重新建立索引

PUT /test_index { "mappings": { "properties": { "field1": { "type": "text", "fields": { "keyword": { "type": "keyword" } } } } } } GET /test_index/_search { "query": { "match_all": {} }, "sort": [ { "field1.keyword": { "order": "desc" } } ]
http://www.jsqmd.com/news/1163515/

相关文章:

  • 2026年7月庆阳​市公共卫生许可证检测集中空调通风系统检测水质检测空气质量甲醛检测怎么做?正规CMA机构办理指南 - 绿呼吸检测中心
  • 意念控制机器人:从脑机接口到远程意念指令的无限可能
  • 神器“Knockoff”扩展程序:精准识别亚马逊“字母汤”品牌,按需处理搜索结果
  • 2026年7月宁波​市公共卫生许可证检测集中空调通风系统检测水质检测空气质量甲醛检测怎么做?正规CMA机构办理指南 - 绿呼吸检测中心
  • 2026广东功效洗护生产厂家推荐:洗护赛道硬实力深度拆解
  • 【北京联合大学本科毕业论文】基于Java的车间生产任务调度管理系统设计与实现
  • 密码遗忘困扰你?3步掌握LaZagne找回丢失的凭据
  • HarmonyOS 6.1 组件生命周期全解剖 — aboutToAppear到aboutToRecycle的执行时序
  • 广州天河珠江新城高端搬家公司怎么选?正规合规搬迁服务商推荐指南 - 从来都是英雄出少年
  • 2026年7月最新北京伯爵官方售后客户服务热线与维修网点地址汇总 - 亨得利钟表维修中心
  • 鸿蒙ArkTS泛型进阶以及命名空间
  • AI:AI写的诽谤文章,我可以告谁?
  • WarcraftHelper:魔兽争霸3终极兼容性修复工具,三步解决现代系统运行难题
  • 2026实木地板品牌格局与地暖专用实木地板市场趋势报告 - 资讯纵览
  • 环氧树脂教练后分子动力学仿真热力学
  • 调频连续波 (FMCW) 雷达(三)simulink仿真
  • Linux 命令之 users 详解(查看当前登录用户)
  • ESP32-WROOM-32E-N4R2:自带2MB PSRAM的均衡之选,轻松应对复杂应用
  • GPT-5.6 正式上线:Sol 编程超 Claude,Meta 加入价格战,270 亿模型压进 iPhone
  • 2026年张家界GEO系统贴牌服务商靠谱源头厂商综合实力推荐:旅游城市AI搜索赛道,源头系统怎么选? - 小随科技
  • 2026咸宁市咸安区好吃的烧烤、夜宵,本地老饕认证 - 资讯纵览
  • 如何从零开始构建3D实时战略游戏:OpenRTS完整入门指南
  • 海康摄像头RTSP流问题 method DESCRIBE failed: 401 Unauthorized
  • 北京极创印象网络科技有限公司可以做什么?全域 AI 营销解决方案解析
  • Vue2+Vuex实战入门:从vue2-happyfri项目掌握前端状态管理核心技巧
  • OpenAI 推出 GPT-Live:告别回合制,AI 语音交互体验大升级!
  • 喜报!《Region - Water Conservancy》被英国EuroPub数据库收录!
  • 基于改进YOLOV11-SOEP的工厂钢材表面缺陷识别系统研究(含源码+数据集+论文)
  • DARTS非标记技术在天然产物机制解析中的应用
  • DigitalJS设备类型完全手册:从基础门电路到复杂FSM的全面解析