昨日正常的查询突发5/50分片失败错误,咨询解决及索引处理方法
分片失败错误修复及索引删除问题解答
错误原因分析
这个分片失败并非索引损坏,是查询操作违规导致的:你在查询里对apiVersion这个text类型字段做了聚合或排序操作,但Elasticsearch默认禁止这类操作——text字段是为全文检索优化的,不适合需要逐文档字段数据的操作(比如聚合、排序)。
修复方案
有两种解决方式,优先选择第一种:
- 改用keyword子字段:如果你的字段mapping里自带keyword子字段(默认创建的text字段一般会包含),把查询里的
apiVersion替换成apiVersion.keyword即可。 - 开启fielddata(不推荐,会占用大量内存):如果必须用text字段做聚合/排序,更新该索引的mapping以开启fielddata:
PUT cwl-2023.05.28/_mapping { "properties": { "apiVersion": { "type": "text", "fielddata": true } } }
关于删除索引
可以直接删除cwl-2023.05.28索引,但不建议这么做——因为这个错误完全可以修复,删除会直接丢失该索引的所有数据。如果确认该索引数据已无保留价值,执行以下命令即可:
DELETE cwl-2023.05.28
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

