初闻ElasticSearch,"踩坑" term记录(中文分词问题)

背景:没有安装中文分词器如ik等插件。

数据:ElasticSearch已有一些记录 ,格式如下

name:姓名-0
age:0

name:姓名-1
age:1

....

java客户端 client 尝试term 查询("name" , "姓名");

结果查出来结果为空。查询网上资料和回顾官方文档,得知term可以理解为精准查询,而中文text在ElasticSearch的默认分词器中,每个字都会被分词。
根据 _analyze分析分词结果,得到原来“姓名-1”被分词成“姓”、“名”、“1”,这三部分。

GET _analyze
{
  "analyzer": "standard",
  "text": "姓名-1"
}

分词结果如下:

{
  "tokens" : [
    {
      "token" : "姓",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "名",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "1",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "<NUM>",
      "position" : 2
    }
  ]
}

这里如果用term,则只有传入 “name":"姓”;“name":"名";“name":"1”这三种其中一种,才能获取到数据。

(Ashiamd的github个人学习笔记)[https://ashiamd.github.io/docsify-notes/#/README] ~小尾巴~
原文地址:https://www.cnblogs.com/Ashiamd/p/13932961.html