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 模糊匹配,在匹配前会将搜索的字符串进行分词,然后将匹配上的数据按照匹配度倒序返回