当前位置: 首页>前端>正文

es文档ID es文档修改器

分析器

可以直接定义在settings下analysis下的几个属性:

  1. Analyzer由Charactor Filter—>Tokenizer—>Token Filter三部分组成。
  2. Normalizer:规整器,它没有分词器,只有字符过滤器和分词过滤器。例如对keyword类型做标准化处理。
  3. Charactor Filter:字符过滤器,去掉文本原始的一些字符,例如html标签等。可以有多个
  4. Tokenizer:分词器,将上一步处理完的全文数据根据一定的规则拆分成词项。
  5. Token Filter:分词过滤器,转换分词后产生的所有词项,例如将分词转为小写,取出的、地、得等停用词,没有Tokenizer。

其中1是组装2345的,2和3是用于数据加入ES时处理原始数据的,4是用于2、3处理后分词的,5是用于4分词后产生的词项进行操作。

  1. Analyzer用于非keyword类型的字段,给keyword类型字段设置了analyzer,该字段会不会分词,keyword类型是不能设置analyzer的,该类型下没有该属性,强行设置会直接报错。
  2. Normalizer只用于keyword类型的字段,除了keyword类型,其他类型字段不能设置normalizer。
  3. 当查询设置了normalizer属性的keyword类型字段时,其normalizer也会作用到查询词上。

设置和查询分析器的两个restful的api,分别是_setting和_analyze

内置过滤器

  • html_strip:html标签过滤器
  • es文档ID es文档修改器,es文档ID es文档修改器_大数据,第1张

  • lowercase:忽略大小写
  • synonyms:同义词过滤,这个过滤器也支持指定近义词路径参数synonyms_path
http://localhost:9560/test_index_1/_settings/
{
  "index":  {
  "analysis":{
                "filter":{
                    "my_synonyms_filter": {
                        "type": "synonym_graph",
                        "synonyms": [
                            "China, chn"
                        ]
                    }
                },
                "analyzer":{
                    "my_synonyms_analyzer": {
                        "filter": [
                            "my_synonyms_filter"
                        ], "type":"custom", "tokenizer":"ik_smart"
                    }
                }
            }
	}
}

es文档ID es文档修改器,es文档ID es文档修改器_大数据_02,第2张

  • pattern_replace:正则替换,将所有非数字或字母都替换为空值。
{
    "index":{
        "analysis":{
            "char_filter":{
                "patternFilter":{
                    "pattern":"[^A-Za-z0-9]",
                    "type":"pattern_replace",
                    "replacement":""
                }
            }
        }
    }
}

es文档ID es文档修改器,es文档ID es文档修改器_es文档ID_03,第3张

内置分析器、分词器

  • standard:根据Unicode文本分段算法,这个会把中文的话就把中文拆成一个字一个字的了,可能会造成冗余结果。还支持设置参数stopwordsstopwords_pathmax_token_length
{
    "index":{
        "analysis":{
            "analyzer":{
                "my_standrad_analyzer":{
                    "type":"standard",
                    "max_token_length":5,
                    "stopwords":"and,or"
                }
            }
        }
    }
}

es文档ID es文档修改器,es文档ID es文档修改器_搜索引擎_04,第4张

  • simple:将文本按照非字母字符进行拆分,并将分词转为小写。
  • english:将英文单词的各种变形处理成单词原型。
  • keyword:保留原始值不变
  • whitespace:按照空格进行分词。
  • classic:按照英语的语法进行分词,去掉一些碎词。比如:

分词器

  • letter:在非字母位置上分割文本。
  • pattern:使用正则表达式进行分词,默认值为\W+,匹配非单词字符(含中文)。支持配置一些额外参数。


    其他示例:
{
  "settings": {
    "analysis": {
      "analyzer": {
        "email_analyzer":{
          "type":"pattern",
          "pattern":"\W|_",
          "lowercase":true
        }
      }
    }
  }
  • uax_url_email:按照文本中的url,邮箱地址去做分词。

官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html

拼音分词器:

git地址:https://github.com/medcl/elasticsearch-analysis-pinyin,相关参数配置:

es文档ID es文档修改器,es文档ID es文档修改器_elasticsearch_05,第5张

总结如下:

  • keep_first_letter:刘德华—>ldh,默认值为true
  • keep_separate_first_letter:刘德华—>l,d,h,默认为false
  • limit_first_letter_length:设置first_letter结果的最大长度,默认长度16
  • keep_full_pinyin:刘德华—> liu,de,hua,默认为true
  • keep_joined_full_pinyin:刘德华—>liudehua,默认为false
  • keep_none_chinese:非中文字不分词,默认为true
  • keep_none_chinese_together :将非中文放在一起,默认为true,DJ音乐家 -> DJ,yin,yue,jia,如果设置为false,DJ音乐家 -> D,J,yin,yue,jia
  • keep_none_chinese_in_first_letter :将非中文字母放在第一个字母中合成为一个分词,刘德华AT2016—>ldhat2016,默认为true
  • keep_none_chinese_in_joined_full_pinyin:保持非中文字母的完整拼音,刘德华2016—>liudehua2016,默认为false
  • none_chinese_pinyin_tokenize:将非中文字母(如果是拼音)的话拆分成一块一块的,默认为true,keep_none_chinese和keep_none_chinese_together应该首先启用。
  • keep_original:保留原始输入值,默认为false
  • lowercase:小写非中文字母,默认值为true
  • trim_whitespace:去空格,默认值为true
  • remove_duplicated_term:重复的词将会被删除,de的—>de,(正常de的—>dede),默认为false
  • ignore_pinyin_offset:没看懂



https://www.xamrdz.com/web/26s1960146.html

相关文章: