ES关于字符串类型(text和keyword)的区别和选用

时间:2025-01-30 22:12:37

-----在ElasticSearch 之后,字符串类型有了重大改动,移除了String类型,而拆分成了两个新类型:“text”类型用于全文搜索,“keyword”类型用于关键词搜索。

  •     他们最大的区别在于是否会利用分词器进行分词。

text类型:

  • 会进行分词,分词后建立索引。比如:对于‘佟永硕’,ik分词器的smart分词会自动将其分成佟、永、硕三个字符进行建立索引,所以单字符搜索可以搜索到,而比如‘永硕’则搜索不到
  • 支持模糊查询,支持准确查询。
  • 不支持聚合查询

keyword类型:

  • 不分词,直接建立索引。依据此特点,可以使用keyword类型+wildcardQuery(通配查询)实现类似sql的like查询(模糊搜索
  • 支持模糊查询,支持准确查询。
  • 支持聚合查询。

 

结论:对于字符串类型的字段,除特殊要求外,尽量使用keyword类型。