美文网首页
es 多字段特性及Mapping中配置自定义Analyzer

es 多字段特性及Mapping中配置自定义Analyzer

作者: 7赢月 | 来源:发表于2020-04-16 20:02 被阅读0次

介绍

本章会介绍es的多字段特性和自定义Analyzer的使用

多字段特性

  • 需要精准匹配时,增加一个keyword字段
  • 使用不同的analyzer
    -- 不同语言
    -- 拼音
    -- 还支持不同的搜索和索引指定不同的analyzer
    es的多字段特性包含如上的实现的精准匹配的keyword和使用不同的analyzer产生的分词

精确值和全文本

精确值:包含数字,日期或者是具体的一个字符串,这些都是在es中的keyword
全文本:是一种非结构化的数据,是es中test类型的值

如上我们也可以看出,精确值是不会被分词了。我们知道es会为每个字段设置倒排索引,并且会为每个字段进行分词,但是在精确值的时候,es就不会使用分词。

自定义分词器

之前介绍过分词器,介绍过character Filter,Tokenizer和Token Filter,在这!https://www.jianshu.com/p/b7613840e3b8

这里就不再赘述了,接下来看几个例子来了解如何自定义分词器

PUT /my_index
{
    "settings": {
        "analysis": {
            "char_filter": {
                "&_to_and": {
                    "type":       "mapping",
                    "mappings": [ "&=> and "]
            }},
            "filter": {
                "my_stopwords": {
                    "type":       "stop",
                    "stopwords": [ "the", "a" ]
            }},
            "analyzer": {
                "my_analyzer": {
                    "type":         "custom",
                    "char_filter":  [ "&_to_and" ],
                    "tokenizer":    "standard",
                    "filter":       [  "my_stopwords" ]
            }}
}}}

如上,我们定义了一个分词器,其中含义我一一解析下:

  • 定了一个mapping类型的char_filter,功能是把&映射成and
  • 接着是一个stop类型的filter,会过滤"the", "a"

总结

本章介绍了es中的多字段特性的实现,分别是通过两种方式来实现;还分别叙述了精确值和全文本;最后通过一个例子讲述了饿自定义analyzer的实现

引用

https://www.elastic.co/guide/cn/elasticsearch/guide/current/custom-analyzers.html

相关文章

网友评论

      本文标题:es 多字段特性及Mapping中配置自定义Analyzer

      本文链接:https://www.haomeiwen.com/subject/yygdvhtx.html