elasticsearch 高级查询
高级查询
子条件查询 (特定字段查询所指特定值)
复合条件查询 (以一定的逻辑组合子条件查询)
一、子条件查询
子条件查询分为 query context、filter context
1.query context
在查下过程中,出来判断文档是否满足查询条件外,ES还会计算一个_score来表示匹配的程度,指在判断目标文档和查询条件匹配的有多好
① 全文本查询(针对文本类型数据)
模糊匹配查询
短语匹配(当我们使用match时,他会匹配title中含有java或从入门的数据;如果使用match_phrase则会匹配"java从入门"这个字段)
多字段匹配模糊匹配查询 查询author或者title中含有张三的数据
语法查询 使用关键字 query_string 查询含有java 和 精通 或 mysql的数据
也可以指定那些字段中含有这些关键字
② 字段级别查询(针对结构化数据,如数字、日期等)
查询作者是张三的数据
范围查询 查询字数大于等于2000并且小于等于4000的数据,如果将gte,lte换成 gt和lt就不包含等于
查询某个时间段内的数据 当前时间可以使用now
2.filter context
在查询过程中,只判断该文档是否满足条件,只有yes或者no
elasticsearch会对filter的数据做缓存,但是要结合bool使用,性能会比query好点
二、复核条件查询
固定分数查询、布尔查询等等
固定分数查询,默认1 固定分数会做缓存
指定分数为2
关键词 bool should 两个条件 author和title是或的关系
关键词 bool must 两个条件 author和title是与的关系
关键词 bool must filter过滤
关键词 bool must_not 查询作者不是张三的数据