ES中的term和match

 

es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text。

keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理

text 存储数据的时候会对字符串进行分词处理,然后存储。

 

match 在匹配时候会对查找的关键词进行分词,然后按照分词匹配查找,模糊查询

term  直接查找关键字 ,精确查询。

 

1.查询keyword类型的数据

term  搜索什么内容就查询什么内容。

match 将搜索的内容先分词再查询,但是keyword类型的字段不会分词,所以也需要完全匹配才能查询

2.查询text类型的数据

 text字段的内容在写入es时会被分词处理

term的搜索是不分词的,假如 字段的内容为:“ read a book”

那么term查询 单独输入 read  ,a ,book 均可查到数据,

但是输入read a,a book,read a book 则搜不到,term查询会将此作为一个整体进行搜索

给text字段上加上.keyword  字段,相当于不分词,可用term查询

 

match 模糊匹配,在匹配前会将搜索的字符串进行分词,然后将匹配上的数据按照匹配度倒序返回

posted @ 2023-03-03 16:25  ni当像鸟飞往你的山  阅读(1090)  评论(0编辑  收藏  举报