ES 您所在的位置:网站首页 term的汉语 ES

ES

2023-03-03 16:20| 来源: 网络整理| 查看: 265

2.1、term&terms查询 2.1.1、term查询

  参考: Elasticsearch Reference [7.10] » Query DSL » Term-level queries » Term query   term的查询是代表完全匹配,搜索之前不会对你搜索的关键字进行分词,如关键字手机,不会分成手和机;再根据关键字去文档分词库中去匹配内容。 类似于MySQL库的 where province = ?

2.1.1.1、命令 # from size类似于mysql的limit POST /sms-logs-index/_search { "from": 0, "size": 10, "query": { "term": { "province": { "value": "北京" } } } }

在这里插入图片描述

2.1.1.2、java代码 @Test public void termQuery() throws IOException { //1。创建request对象,查询用的对象一般都是SearchRequest对象 SearchRequest mySearchRequest = new SearchRequest(index); //2,指定查询条件,依赖查询条件的对象SearchSourceBuilder的对象 SearchSourceBuilder builder = new SearchSourceBuilder(); builder.from(0).size(10).query(QueryBuilders.termQuery("province", "北京")); //指定term查新条件 mySearchRequest.source(builder); //3. 执行查询 SearchResponse search = client.search(mySearchRequest, RequestOptions.DEFAULT); //4. 获取到_source中的数据,并展示 //注意RESTFUL风格上是两个hits,所以这里要两次getHits() for (SearchHit hit : search.getHits().getHits()) { Map result = hit.getSourceAsMap(); System.out.println(result); } } 2.1.2、terms 查询

terms和terms的查询机制是一样的,都不会将指定的查询关键字进行分词,直接去分词库中匹配,找到相应的文档内容。 terms:是针对一个字段包含多个值时使用。 换句话说:

term类似于MySQL的 where province=? terms类似于MySQL中的 where province in (?, ? ,?)

   注意:term和terms只是说不会对关键字进行分词,并不是说只能用于keyword类型的字段查询,如假设文档中有个字段是text类型,采用了ik分词器,里面的值是奋斗的时代,通过网上在线ik分词器,我们知道会分解成奋斗,奋,斗,时代,如图4,但是如果你用该字段的term或者terms查询,输入的关键字是奋斗的时代,因为输入的关键字不会分词,反而查不到该记录,如果你输入的关键字是奋斗就是可以的。

在这里插入图片描述

2.1.2.1、命令 POST /sms-logs-index/_search { "from": 0, "size": 20, "query": { "terms": { "province": [ "北京", "上海", "杭州" ] } } } 2.1.2.2、java代码 @Test public void termsQuery() throws IOException { //1。创建request对象,查询用的对象一般都是SearchRequest对象 SearchRequest mySearchRequest = new SearchRequest(index); //2,指定查询条件,依赖查询条件的对象SearchSourceBuilder的对象 SearchSourceBuilder builder = new SearchSourceBuilder(); builder.from(0).size(10).query(QueryBuilders.termsQuery("province", "北京", "上海", "杭州")); //指定term查新条件 // 注意将条件放入Request对象中 mySearchRequest.source(builder); //3. 执行查询 SearchResponse search = client.search(mySearchRequest, RequestOptions.DEFAULT); //4. 获取到_source中的数据,并展示 //注意RESTFUL风格上是两个hits,所以这里要两次getHits() for (SearchHit hit : search.getHits().getHits()) { Map result = hit.getSourceAsMap(); System.out.println(result); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有