ElasticSearch分词器应用

分词器的使用

类型为keyword表示不分词,要想分词,字段类型必须为text

一、指定分词器

  • 设置mapping,新建一个索引article并且指定字段使用的分词器

PUT article
{
  "mappings":{
    "properties":{
      "content":{
        "type":"text",
        
        "analyzer":"hanlp_index"
      }
    }
  }
}
查询
  • 查询
GET article/_search
{
    "query":{
        "match":{
            "content":"查询内容"
        }
    }
}
查看分词效果
  • 查看索引使用的分词器分词效果(第一种)
GET article/_analyze
{
    "field":"content",
    "text":["将这一句话进行分词","看看效果如何"]
}
  • 直接使用分词器查看分词效果(第二种)
GET _analyze
{
    "analyzer":"分词器",
    "text":["将这一句话进行分词"]
}

二、自定义拼音分词器

1.新建索引,设置settings

新建一个索引stars,并且设置settings。

anaylzer是由三部分组成:

  1. Character Filter:将文本的html标签剔除
  2. Tokenizer:按照规则进行分词,在英文中按照空格分词
  3. Token Filter:去掉stop word(停顿词,a,the,is),然后转小写
PUT stars
{
  "settings":{
    "analysis":{
      "analyzer":{
      
        "my_analyzer":{
         
          "tokenizer":"my_token_filter"
        }
      },
      "tokenizer":{
        "my_token_filter":{
          "type":"pinyin",
         
          "keep_original":true,
          "keep_joined_full_pinyin":true,
          "keep_full_pinyin":"false"
        }
      }
    }
  }
}

此时定义好了一个my_analyzer的分词器,是基于pinyin分词器,其中的可选参数的作用参考github文档

1.1 查看自定义的分词器效果

第三种

GET stars/_analyze
{
	"analyzer":"my_analyzer",
	"text":["测试分词的效果"]
}
2.设置mapping
PUT stars/_mapping
{
  "properties":{
    "name":{
      "type":"text",
      
      "analyzer":"my_analyzer"
      
    }
  }
}

此时设置mapping的方式不能使用一中的方式,因为在设置完settings以后,索引的结构已经存在maping(使用GET stars/_mapping查看如下)
ElasticSearch分词器应用_第1张图片
如果依然采用一中的方式会显示错误
ElasticSearch分词器应用_第2张图片

你可能感兴趣的:(ElastecSearch,elasticsearch)