配置项说明
静态配置项
创建index时指定,创建后不能再修改
index.number_of_shards 当前index拥有的主分片数,默认5,最大1024
index.shard.check_on_startup 在启动时是否检查分片,false:打开时不检查损坏;true:检查物理损坏;checksum:物理损坏和逻辑损坏都检查;默认false
index.routing_partition_size 设置的自定义路由可以转到几个分片上
index.codec 数据压缩算法设置 default:默认全长LZ4压缩算法; best_compression:拥有更高压缩比,但存储性能会降低 ;默认default
index.sort.field 用于排序的字段,多个使用数组 排序的字段只能是boolean,numeric,date,keyword类型
index.sort.order 排序方式 asc:正序;desc:倒序
index.sort.mode 用于多个值的字段的排序模式 max : 选最小值;min:选最大值
index.sort.missing 当排序字段不存在时指定哪种排序 _first : 按第一个字段来排序;_last:按最后一个字段来排序
index.store.type 存储的方式 fs:文件系统;simplefs:随机文件存储;niofs:非阻塞文件系统存储;mmapfs:mmap内存映射存储
index.store.preload 将索引文件预加载到内存中 * :所有数据;nvd:存储各个影响分数的因子的数据;dvd:文档的值;tim:文件字典;doc:发布清单;dim:点数据
动态配置项
在创建index后,还可以通过API动态来修改。
analysis的tokenizer配置
也就是分词器的配置
内置分词器
- standard:这个是默认的分词器,使用Unicode文本分割算法,将文本按单词切分并且转换为小写
- simple:按照非字母切分并且进行小写处理
- stop:与 Simple Analyzer 类似,但增加了停用词过滤(如 a、an、and、are、as、at、be、but 等)。
- whitespace:使用空格对文本进行切分,并不进行小写转换
- pattern;使用正则表达式切分,默认使用 W+ (非字符分隔)。支持小写转换和停用词删除。
- keyword:不进行分词
- language:提供了多种常见语言的分词器。如 Irish、Italian、Latvian 等。
- customer:自定义分词器
standard
将词汇单元转换成小写,并去除停用词和标点符号。它基于Unicode文本分割算法进行工作,适用于大多数语言。
dictionary
dictionary 类型的 tokenizer 用于根据预先定义的词典文件来分词。这种分词器通常用于将文档中的文本按照词典中的词条进行分割。对于文件中没有定义的单词按照默认的分词规则进行处理。
配置了词典文件的情况下,也可以配置其他的分词器进行完善分词
dictionary: 指定包含词条的词典文件路径。
"analysis": {
"tokenizer": {
"my_dictionary_tokenizer": {
"type": "dictionary",
"dictionary": "/path/to/dictionary.txt"
}
},
"analyzer": {
"my_custom_analyzer": {
"tokenizer": "my_dictionary_tokenizer",
"filter": ["lowercase"]
}
}
}
假设 dictionary.txt 文件的内容如下:
hello
world
dollar
less_than
greater_than
english
english 分词器会自动去除一些常见的英语停用词(如 a, an, the, is, at, which, 等)。
分词器会对文本进行标准化处理,将所有字母转换为小写,以便统一处理。
词干提取(Stemming):english 分词器不直接进行词干提取,但它可以与词干提取过滤器(如 porter_stem 或 snowball)配合使用,进一步简化词汇。词干提取(Stemming)是指将词语还原为其基本形式或词根的过程。
如不进行词干提取:
[hello, world, this, is, a, test, running, and, running]
提取词干后:
[hello, world, this, is, a, test, running, and, running]
analysis的char_filter配置
字符过滤器在分词前对文本进行处理,
mapping
用于定义一系列字符或字符串的映射规则。参数mappings: 一个数组,包含多个映射规则,每个规则是一个字符串,格式为 source => target。
mapping 类型的 char_filter 适用于以下场景:
- 字符替换:将特定字符或字符串替换为其他字符或字符串。
- 删除特定字符:通过将特定字符映射为空字符串来删除它们。
- 标准化文本:将不同形式的表示统一起来,例如将多种货币符号统一为一种形式。
例如下面会把&替换为and单词
"char_filter": {
"my_mapping": {
"type": "mapping",
"mappings": [
"& => and",
"$ => dollar",
"< => less_than",
"> => greater_than"
]
}
}
analysis的filter配置
filter就是标记过滤器(TokenFilter),在分词器的结果进行进一步处理。
common_grams
common_grams 是一种特殊的过滤器类型,用于从文本中提取常见的 n-gram(连续的 n 个字符或单词),并将其添加到分词结果中。common_grams 过滤器可以配置 common_words_path 参数,用于指定一个包含常见词汇的文件路径。这些常见词汇将在生成 n-gram 时被特殊处理,从而避免生成不必要的 n-gram 组合。
例如common_words_path配置为dict/word.dic,word.dic中我们写上
the
is
a
and
这样这些词就不会占用关键词了
dictionary
用于根据预先定义的字典文件来替换文本中的某些字符或字符串。这种过滤器通常用于将一些特定的缩写或符号替换为更标准的形式,从而提高文本的一致性和搜索准确性。
type: 指定字符过滤器的类型,这里是 dictionary。
mappings_path: 指定包含映射规则的字典文件路径。
如mappings.txt内容
& => and
$ => dollar
< => less_than
> => greater_than
引用:https://blog.csdn.net/weixin_40482816/article/details/126899385?fromshare=blogdetail&sharetype=blogdetail&sharerId=126899385&sharerefer=PC&sharesource=weixin_48242139&sharefrom=from_link