600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > ES查询-基本查询续

ES查询-基本查询续

时间:2023-06-15 00:32:25

相关推荐

ES查询-基本查询续

为什么80%的码农都做不了架构师?>>>

1.标示符查询

用来提供标示符过滤文档。 下面查询只返回含有value数组中一个标示符的文档。

{"query":{"ids":{"values":["1","2","3"]}}}

复杂一点,在给定类型中完成查询。

{"query":{"ids":{"type":"book","values":["1","2","3"]}}}

2.前缀查询

查询特定字段以给定前缀为开始的文档。

{"query":{"prefix":{"title":"cri"}}}

还可以增加3.0的加权。

{"query":{"prefix":{"title":{"value":"cri","boost":3.0}}}}

3.模糊查询(fuzzy)

模糊查询允许我们进行相似值的查询,给予编辑距离算法来匹配文档。编辑距离的计算基于我们提供的搜索字条以及被我们搜索的文档。模糊查询比较占用CPU资源。但是如果用户有拼写错误时,ES利用模糊查询仍然可以找到我们感兴趣的文档。 下面的例子是搜索crime时误输入crme。

{"query":{"fuzzy":{"title":"crme"}}}Theresponseforsuchaquerywillbeasfollows:{"took":81,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.5,"hits":[{"_index":"library","_type":"book","_id":"4","_score":0.5,"_source":{"title":"CrimeandPunishment","otitle":"Преступлéниеинаказáние","author":"FyodorDostoevsky","year":1886,"characters":["Raskolnikov","SofiaSemyonovnaMarmeladova"],"tags":[],"copies":0,"available":true}}]}}

value : 指定的实际查询boost : 指定的查询加权值,默认 1.0 .fuzziness : 指定匹配字段的最小近似度prefix_length : 公共前缀长度,默认为0max_expansions : 指定可被扩大到的最大词条数,默认为无限制

4.通配符查询(wildcard)

允许我们在查询时使用*和?的通配符

{"query":{"wildcard":{"title":"cr?me"}}}

通配符查询包含加权属性值。

{"query":{"wildcard":{"title":{"value":"cr?me","boost":20.0}}}}

注意:通配符查询不注重性能,应尽量避免。且可以进行参数控制重写。

5.范围查询

范围查询使我们能够找到在某一个字段在某个范围内的文档,字段可以是数值型或字符串型。范围查询只支持单个字段。 下面的例子是查找year字段从1700到1900的所有文档。

{"query":{"range":{"year":{"gte":1700,"lte":1900}}}}

参数:

gte:匹配字段大于等于此参数值的gt :匹配字段大于此参数值的lte:匹配字段小于等于此参数值的lt :匹配字段小于此参数值的

6.more_like_this查询

可以匹配与我们提供的文本或文档相似的查询。ES支持几个参数来定义more_like_this查询。

field:定义应该执行查询的字段,默认为所有字段。like :包含用来进行比较的字段。min_term_freq:文档中字条最低频率,低于此频率将被忽略,默认为1.min_doc_freq:包含该词条的最低文档数,低于此该词条将被忽略,默认为5.更多参数可以参考官方文档。

{"query":{"more_like_this":{"fields":["title","otitle"],"like":"crimeandpunishment","min_term_freq":1,"min_doc_freq":1}}}

下面是用来匹配一个给定的文档。

{"query":{"more_like_this":{"fields":["title","otitle"],"min_term_freq":1,"min_doc_freq":1,"like":[{"_index":"library","_type":"book","_id":"4"}]}}}

上面两种匹配可以一次进行:

{"query":{"more_like_this":{"fields":["title","otitle"],"min_term_freq":1,"min_doc_freq":1,"like":[{"_index":"library","_type":"book","_id":"4"},"crimeandpunishment"]}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。