1.text类型无法使用aggs聚合分析
2.text类型的数值是无法排序的
解决方式:
1.聚合使用keyword类型
PUT 索引
{
"mappings": {
"properties": {
"name":{
"type": "text",
"fields": {
"keyword":{
"type":"keyword"
}
}
}
}
}
2.开始 fieldData:true
PUT 索引
{
"mappings": {
"properties": {
"name":{
"type": "text",
"fieldData":true
}
}
}
fieldData是存于内存的,对磁盘空间占用太大,且IO开销太大,严重影响效率
推荐使用 解决方案1
也可以通过参数来设置内存限制
indices.fielddata.cache.size:20%
内存监控命令
GET _stats/fielddata?fields=*
GET _nodes/stats/indices/fielddata?fields=*//按照节点
GET _nodes/stats/indices/fielddata?fields=*&level=indices//按照节点索引
"_all" : {
"primaries" : {
"fielddata" : {
"memory_size_in_bytes" : 632, //占用内存多少
"evictions" : 0,//做释放次数
"fields" : {
"type" : {//字段名称
"memory_size_in_bytes" : 0//赞同内存多少
},
"_id" : {
"memory_size_in_bytes" : 632
}
}
}
},
"total" : {//总计
"fielddata" : {
"memory_size_in_bytes" : 632,
"evictions" : 0,
"fields" : {
"type" : {
"memory_size_in_bytes" : 0
},
"_id" : {
"memory_size_in_bytes" : 632
}
}
}
}
本文探讨了Elasticsearch中text类型不支持aggs聚合的问题及数值无法排序的解决方案。建议使用keyword类型进行聚合分析,以避免fieldData带来的内存占用和效率问题。同时,介绍了如何设置fieldData内存限制以及监控内存使用情况的命令。
1992

被折叠的 条评论
为什么被折叠?



