过滤缓存
elasticsearch容许咱们把某些字段的值加入到字段数据缓存中,这是灰常有用的,特别是在作基于字段排序或者聚合时。
elasticsearch支持两种类型三种形式的字段数据过滤,基于词频,基于正则以及基于二者结合的形式。
添加字段数据过滤信息格式以下
"tag":{
"type": "string",
"index": "not_analyzed",
"fielddata": {
"filter": {}
}
}正则表达式
1.基于词频过滤
基于词频过滤是指那些只加载频率高于指定频率的最小值min且低于指定频率的最大值max.词项的频率是针对索引段的并不是是针对索引的,
同一个词项在索引段级和索引级是不同的。
min和max能够为一个百分比也能够为具体的特定值
以下:
min:20%等同于min:0.2
min:10
除此以外还包含此属性min_segment_size表示为在构建字段数据缓存时,此索引段中最少包含的
文档个数.小于此个数的索引段不会被考虑
以下:
min_segment_size:100
表示此索引段中至少不小于100个文档个数api
保存词频在0.01到0.2之间且此索引段中文档个数很多于100的字段映射缓存
{
"book": {
"properties": {
"tag": {
"type": "string",
"index": "not_analyzed",
"fielddata": {
"filter": {
"frequcency": {
"min": 0.01,
"max": 0.2,
"min_segment_size":100
}
}
}
}
}
}
}
2.基于正则表达式过滤
基于正则表达式过滤只有匹配特定表达式的词项会加载到字段数据缓存中
{
"book": {
"properties": {
"tag": {
"type": "string",
"index": "not_analyzed",
"fielddata": {
"filter": {
"regex": "^#.*"
}
}
}
}
}
}
3.基于词频和正则表达式过滤
{
"book": {
"properties": {
"tag": {
"type": "string",
"index": "not_analyzed",
"fielddata": {
"filter": {
"frequcency": {
"min": 0.01,
"max": 0.2,
"min_segment_size":100
},
"regex": "^#.*"
}
}
}
}
}
}
字段数据缓存虽然不是在创建索引时构建的,可是咱们能够在查询期间重建,能够在运行时改变过滤行为能够经过api来改变fielddata配置节点来实现elasticsearch