一、概述
虽然全文查询将在执行之前分析查询字符串,但Term级查询将根据存储在倒排索引中的确切术语进行操作。
这些查询通常用于结构化数据,如keyword、数字,日期和枚举,而不是全文字段。或者,它们允许您在分析过程之前制定低级查询。[es 5.x后使用json直接创建索引默认是text,但是可以使用【字段.keyword=‘aa’】方式进行term的使用]
1.1、精准查询:termQuery【相当于sql:field = 1】
查找包含指定字段中指定的确切术语的文档。因为name是字符串使用json方式创建,会除了text还会默认创建keyword字段。
QueryBuilder qb = termQuery("name.keyword", "张三");
1.2、精准in查询:termsQuery【相当于sql:field in (1,2,3)】
查找包含指定字段中指定的任何确切术语的文档
1.3、范围查询:rangeQuery【相当于sql:field > 1 and field<30】
查找指定字段包含指定范围内的值(日期,数字或字符串)的文档
lt 小于 from
gt 大于 to
lte 小于等于 from includeUpper 组合使用
gte 大于等于 from includeLower组合使用
1.4、存在查询:existsQuery【相当于sql:field is not null】
查找指定字段包含任何非空值的文档。
1.5、前缀查询:prefixQuery【相当于sql:field like '张*'】
查找指定字段包含具有指定的确切前缀的术语的文档。
1.6、通配符查询:wildcardQuery【相当于sql:field like '张_三*'】
查找指定字段包含与指定模式匹配的术语的文档,其中模式支持单字符通配符(?)和多字符通配符(*)
1.7、正则查询:regexpQuery
查找指定字段包含与指定的正则表达式匹配的术语的文档。
1.8、模糊度查询:fuzzyQuery【通过fuzziness设置可以错几个】
查找指定字段包含与指定术语模糊相似的术语的文档。模糊度是以Levenshtein编辑距离1或2来衡量的。
1.9、类型查询:typeQuery【相当于sql:select * from table】
查找指定类型的文档。
1.10、类型主键查询:idsQuery【相当于sql:select * from table where id in (1,2)】
查找具有指定类型和ID的文档。
附注:以上1.1~1.10对应示例
github:https://github.com/bjlhx15/spring-cloud-base/tree/master/service6-es