56.fielddata filter的细粒度内存加载控制
语法:
POST /test_index/_mapping/test_type
{
"properties": {
"test_field": {
"type": "text",
"fielddata": {
"filter": {
"frequency": {
"min": 0.01,
"min_segment_size": 500
}
}
}
}
}
}
min:仅仅加载至少在1%的doc中出现过的term对应的fielddata。比如es总共有1000个doc,现查询的词是hello,那么hello必须在10个doc中出现,这个hello对应的fielddata才会加载到内存中来
min_segment_size:500,是指少于500个doc的segment不加载fielddata。
加载fielddata的时候,也是按照segment去进行加载的,某个segment里面的doc数量少于500个,那么这个segment的fielddata就不加载。
这项目设置偏底层了,在一般工作学习中,不用去设置。
另:
在我自已的环境中未实验成功:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Can't parse boolean value [{filter={frequency={min=0.01, min_segment_size=500}}}], expected [true] or [false]"
}
],
"type": "illegal_argument_exception",
"reason": "Can't parse boolean value [{filter={frequency={min=0.01, min_segment_size=500}}}], expected [true] or [false]"
},
"status": 400
}