java es总结-索引settings配置

时间:2025-08-31 10:00:02来源:互联网

下面小编就为大家分享一篇java es总结-索引settings配置,具有很好的参考价值,希望对大家有所帮助。

配置项说明

静态配置项

创建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

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!