elasticsearch 高级查询

时间:2023-03-10 01:51:25
elasticsearch 高级查询

高级查询

子条件查询  (特定字段查询所指特定值)

复合条件查询  (以一定的逻辑组合子条件查询)

一、子条件查询

子条件查询分为 query context、filter context

1.query context

在查下过程中,出来判断文档是否满足查询条件外,ES还会计算一个_score来表示匹配的程度,指在判断目标文档和查询条件匹配的有多好

① 全文本查询(针对文本类型数据)

模糊匹配查询

elasticsearch 高级查询

短语匹配(当我们使用match时,他会匹配title中含有java或从入门的数据;如果使用match_phrase则会匹配"java从入门"这个字段)

elasticsearch 高级查询

多字段匹配模糊匹配查询  查询author或者title中含有张三的数据

elasticsearch 高级查询

语法查询 使用关键字 query_string   查询含有java 和 精通 或 mysql的数据

elasticsearch 高级查询

也可以指定那些字段中含有这些关键字

elasticsearch 高级查询

② 字段级别查询(针对结构化数据,如数字、日期等)

查询作者是张三的数据

elasticsearch 高级查询

范围查询 查询字数大于等于2000并且小于等于4000的数据,如果将gte,lte换成 gt和lt就不包含等于

elasticsearch 高级查询

查询某个时间段内的数据 当前时间可以使用now

elasticsearch 高级查询

2.filter context

在查询过程中,只判断该文档是否满足条件,只有yes或者no

elasticsearch会对filter的数据做缓存,但是要结合bool使用,性能会比query好点

elasticsearch 高级查询

二、复核条件查询 

固定分数查询、布尔查询等等

固定分数查询,默认1 固定分数会做缓存

elasticsearch 高级查询

指定分数为2

elasticsearch 高级查询

关键词 bool  should 两个条件 author和title是或的关系

elasticsearch 高级查询

关键词 bool  must 两个条件 author和title是与的关系

elasticsearch 高级查询

关键词 bool  must  filter过滤

elasticsearch 高级查询

关键词 bool  must_not 查询作者不是张三的数据

elasticsearch 高级查询