Elasticsearch查询之Term Query示例解析

目录
  • Term Query
    • 基本语法
    • Java代码写法
  • Terms-匹配多个值
    • 基本语法
    • Java写法
  • Term查询可配置的其他参数
  • 总结

Term Query

Term Query是一种最基本的查询方式,它用于在Elasticsearch中查询一个字段中包含指定关键词的文档,与MySQL中的等值查询类似。使用Term Query时,可以对字段进行完全匹配,且区分大小写。

基本语法

GET /{index}/_search
{
    "query": {
        "term": {
            "{field}": "{value}"
        }
    }
}

其中,{index}表示查询的索引名称,{field}表示需要查询的字段,{value}表示需要匹配的值。

Java代码写法

// TODO 省略导入包
import java.io.IOException;
public class TermQueryExample {
    public static void main(String[] args) throws IOException {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));
        SearchRequest searchRequest = new SearchRequest("my_index");
        // 这里的searchSourceBuilder 相当于 query:{}
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        // query:{term:{"field_name":"field_value"}}
        searchSourceBuilder.query(QueryBuilders.termQuery("field_name", "field_value"));
        searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        searchRequest.source(searchSourceBuilder);
        // 执行查询
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        // TODO: 解析搜索结果
        client.close();
    }
}

Terms-匹配多个值

term查询只能用于匹配该属性的单个值,若想匹配多个值,可以用terms查询

基本语法

GET /{index}/_search
{
    "query": {
        "terms": {
            "{field}": [
                "{value1}",
                "{value2}",
                "{value3}"
            ]
        }
    }
}

Java写法

SearchRequest searchRequest = new SearchRequest("index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 注意这里是使用termsQuery("field",value1,value2)
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", "value1", "value2", "value3");
searchSourceBuilder.query(termsQueryBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

Term查询可配置的其他参数

Term Query还有其他的一些设置参数,比如:

  • boost参数:可以为查询结果设置权重,提高或降低查询结果的得分,影响查询结果的排名。
  • case_insensitive参数:设置是否对查询进行大小写不敏感的匹配。
  • rewrite参数:控制查询的rewrite策略,主要用于控制查询性能,缓存占用等方面。
  • index参数:控制是否在查询时使用倒排索引,以及使用哪些倒排索引进行查询。

总结

使用Term Query时需要注意以下几点:

  • 仅匹配完全匹配的关键字。
  • 字段必须是不分词的。
  • 通常情况下,不需要将关键字转换为小写字母,因为Term Query不会将关键字转换为小写字母。

总之,Term Query非常适合用于对某个字段进行精确匹配的场景。如果您想进行模糊匹配或全文搜索,请考虑使用Match Query。

以上就是Elasticsearch查询之Term Query示例解析的详细内容,更多关于Elasticsearch Term查询的资料请关注我们其它相关文章!

(0)

相关推荐

  • Elasticsearch查询 - Match 查询

    目录 Match Query match查询示例 JavaAPI查询示例 match_phrase查询示例 match查询的常用参数 Match查询与Term查询的区别 总结 Match Query Match查询是一种基于全文本的查询方法,可以在一个或多个字段中搜索包含指定文本的文档.它会将查询字符串进行分词处理,然后对每个词进行匹配,从而找到所有匹配的文档. Match查询有两种类型:match_phrase和match.match_phrase用于匹配完整的短语,而match只需匹配单个词

  • ElasticSearch学习之多条件组合查询验证及示例分析

    目录 多条件组合查询 bool constant_score 查询验证 & 分析 验证 分析 排序 默认排序 自定义排序 tips 单字段排序 多字段 scroll分页 初始化快照 & 快照保存10分钟 根据快照ID滚动查询 多条件组合查询 bool es中使用bool来控制多条件查询,bool查询支持以下参数: must:被查询的数据必须满足当前条件 mush_not:被查询的数据必须不满足当前条件 should:被查询的数据应该满足当前条件.should查询被用于修正查询结果的评分.需

  • Elasticsearch查询Range Query语法示例

    目录 Range Query 查询语法示例 查询数字范围 查询日期范围 查询字符串范围 注意 JavaAPI查询示例 总结 Range Query Range查询可以查询一个范围内的文档.它可以用来查询数值型字段.日期型字段.字符串型字段等等. 我们可以使用range查询来查询符合一定范围内的数据,如查询某个价格区间.某个时间段内的数据等等. 查询语法示例 GET /{index}/_search { "query": { "range": { "{fie

  • Elasticsearch percolate 查询示例详解

    目录 Elasticsearch 通常如何工作? 什么是 percolate 查询? Percolate 用例 Percolate query 实施 创建 percolate 索引: 如何将 Percolate 与你的应用程序集成 为什么要 percolate 而不是 watcher? Percolate query API Elasticsearch 通常如何工作? 我们将文档索引到 Elasticsearch 中并对其运行查询以获得满足提供的搜索条件的文档. 我们构造一个匹配或术语查询作为输

  • Elasticsearch查询之Term Query示例解析

    目录 Term Query 基本语法 Java代码写法 Terms-匹配多个值 基本语法 Java写法 Term查询可配置的其他参数 总结 Term Query Term Query是一种最基本的查询方式,它用于在Elasticsearch中查询一个字段中包含指定关键词的文档,与MySQL中的等值查询类似.使用Term Query时,可以对字段进行完全匹配,且区分大小写. 基本语法 GET /{index}/_search { "query": { "term":

  • Elasticsearch在应用中常见错误示例解析

    目录 一 read_only_allow_delete" : "true" 二 illegal_argument_exception 三 Result window is too large 一 read_only_allow_delete" : "true" 当我们在向某个索引添加一条数据的时候,可能(极少情况)会碰到下面的报错: { "error": { "root_cause": [ { "

  • Elasticsearch聚合查询及排序操作示例

    目录 1 es排序 2 match和match的区别 3 分页查询 4 es 组合查询 5 结果过滤展示字端 6 结果高亮展示 7 聚合查询avg.max.min.sum.分组 8 mapping和_template模版 9 ik分词 10 term和match的区别 1 es排序 # 1 排序 GET jeff/doc/_search { "query": { "match": { "from": "gu" } }, &qu

  • GO语言类型查询类型断言示例解析

    目录 类型查询 1.comma-ok断言 2. switch测试 类型断言 类型查询 我们知道interface的变量里面可以存储任意类型的数值(该类型实现了interface).那么我们怎么反向知道这个变量里面实际保存了的是哪个类型的对象呢?目前常用的有两种方法: comma-ok断言 switch测试 1.comma-ok断言 Go语言里面有一个语法,可以直接判断是否是该类型的变量: value, ok = element.(T),这里value就是变量的值,ok是一个bool类型,elem

  • Nest 复杂查询示例解析

    目录 Nest 复杂查询 QueryUserDto是查询参数类型 UserService如何实现 Nest 复杂查询 复杂查询包括分页.模糊查询.多条件筛选.排序等,满足前端对查询的所有诉求. Nest 复杂查询,主要使用 repository.findAndCount()方法实现. 假设有一个能分页查询所有用户,可根据用户名进行筛选,并对结果按照更新时间倒序排序的需求,它的 controller 如下: @Post() @Roles(Role.Admin, Role.SuperAdmin) a

  • MyBatis SqlSource源码示例解析

    目录 正文 SqlNode SqlNode接口定义 BoundSql SqlSource SqlSource解析时机 SqlSource调用时机 总结 正文 MyBatis版本:3.5.12. 本篇讲从mybatis的角度分析SqlSource.在xml中sql可能是带?的预处理语句,也可能是带$或者动态标签的动态语句,也可能是这两者的混合语句. SqlSource设计的目标就是封装xml的crud节点,使得mybatis运行过程中可以直接通过SqlSource获取xml节点中解析后的SQL.

  • 10个Elasticsearch查询的实用技巧分享

    目录 前言 示例 1. 匹配多个词语 2. 匹配某个字段中的任意一个词 3. 匹配某个字段中的词语前缀 4. 匹配某个字段中的词语通配符 5. 匹配某个字段中的词语模糊匹配 6. 匹配某个字段中的词语范围 7. 匹配某个字段中的词语存在与否 8. 按照某个字段排序 9. 返回某些字段的部分数据 10. 进行分页操作 前言 Elasticsearch是一个非常流行的搜索引擎,已经成为了许多企业的首选解决方案.然而,我们要想成为一个优秀的程序员,就必须掌握各种查询技巧.本文将向大家介绍10个实用的E

  • MYSQL子查询和嵌套查询优化实例解析

    查询游戏历史成绩最高分前100 Sql代码 SELECT ps.* FROM cdb_playsgame ps WHERE ps.credits=(select MAX(credits) FROM cdb_playsgame ps1 where ps.uid=ps1.uid AND ps.gametag=ps1.gametag) AND ps.gametag='yeti3' GROUP BY ps.uid order by ps.credits desc LIMIT 100; Sql代码 SEL

  • Java正则表达式的语法及示例解析

    1匹配验证-验证Email是否正确 Java | 复制 public static void main(String[] args) { // 要验证的字符串 String str = "service@xsoftlab.net"; // 邮箱验证规则 String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}"; // 编译正则表达式 Pattern pat

随机推荐