添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

注:该文项目基础为分布式搜索 Elasticsearch——项目过程(一) 分布式搜索Elasticsearch——项目过程(二) ,项目骨架可至 这里 下载。

ES源代码中对 t er mQuery的描述如下所示:

* A Query that matches documents containing a term. * @param name The name of the field * @param value The value of the term public static TermQueryBuilder termQuery(String name, String value) { return new TermQueryBuilder(name, value);
termQuery是我花了较多时间才了解的一种Query(因之前对Lucene的研究较少),经总结发现,termQuery 中的value 有以下情况:

1. 若value为汉字,则大部分情况下,只能为一个汉字;

2. 若value为英文,则是一个单词;

termQuery代码如下所示:

* @author Geloin package com.geloin.esample.util; import java.util.UUID; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.junit.Test; import com.fasterxml.jackson.databind.ObjectMapper; import com.geloin.esample.BaseTest; import com.geloin.esample.entity.Person; * @author Geloin public class TermQueryTest extends BaseTest { @Test public void termQuery() { String index = "user"; String type = "tb_person"; try { // 创建索引 Person p = new Person(); p.setId(UUID.randomUUID().toString()); p.setAge(20); p.setIsStudent(false); p.setSex("男"); p.setName("别克"); ObjectMapper mapper = new ObjectMapper(); String source = mapper.writeValueAsString(p); client.prepareIndex(index, type, p.getId()).setSource(source) .execute().actionGet(); // 查询 QueryBuilder qb = QueryBuilders.termQuery("name", "别"); SearchResponse sResponse = client.prepareSearch(index) .setTypes(type).setQuery(qb).setFrom(0).setSize(12) .execute().actionGet(); SearchHits hits = sResponse.getHits(); if (null != hits && hits.totalHits() > 0) { for (SearchHit hit : hits) { String json = hit.getSourceAsString(); Person newPerson = mapper.readValue(json, Person.class); System.out.println("name\t\t" + newPerson.getName()); System.out.println("sex\t\t" + newPerson.getSex()); System.out.println("age\t\t" + newPerson.getAge()); System.out.println("isStudent\t\t" + newPerson.getIsStudent()); } else { log.info("没有查询到任何结果!"); // 防止出现:远程主机强迫关闭了一个现有的连接 Thread.sleep(100000); } catch (Exception e) { e.printStackTrace(); 注:该文项目基础为分布式搜索Elasticsearch——项目过程(一)和分布式搜索Elasticsearch——项目过程(二),项目骨架可至这里下载。        ES源代码中对termQuery的描述如下所示: /** * A Query that matches documents containing a term. * * @param
牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.1 Elasticsearch 入门_52studyit.com.wmv 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.2.png 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.3.png 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.4 Spring整合 Elasticsearch _52studyit.com.wmv 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.5.png 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.6 开发社区 搜索 功能_52studyit.com.wmv 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\6.7.png 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\牛客Java高级工程师-第六章 Elasticsearch 分布式 搜索 引擎 .pdf 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\第六章素材和源码\community-6.2.zip 牛客Java高级工程师 第6章 Elasticsearch 分布式 搜索 引擎\第六章素材和源码\community-6.3.zip
最近在做es 查询,有一个业务涉及到 类似sql in 查询功能。日志格式是自定义格式,按照某一个字段使用 term s Query 查询时,结果为空. 数据流程: 日志文件——> logstash——> elasticsearch 日志格式 {"host_name":"VM-TR73PO26-DB","time":"2018-12-09", ...} 主机名: 按照 Bo...
private List<Integer> doctorIds; // id匹配多个值 temp Query Builder .must( Query Builder s. term s Query ("_id", doctorIds)); 最近在做es6.x 查询,有一个业务涉及到 类似sql in 查询功能。日志格式是自定义格式,按照某一个字段使用 term s Query 查询时,结果为空 日志格式 {"host_name":"VM-TR73PO26-DB","time":"2018-12-..
1 Query Builder s.match Query (“supplierName”,param) 2 Query Builder s.matchPhrase Query (“supplierName”,param) 3 Query Builder s.matchPhrasePrefix Query (“supplierName”,param) 4 Query Builder s. term Query (“supplierName”,param) 5 Query Builder s.wildcard Query (“supp 我的字段是 name 和 age Query Builder query Builder = Query Builder s. term Query (“name.keyword”, “淘宝”); name 是你的字段名 其实真正的精准 搜索 值在字段名在的keyword 没事自己看看索引详情就能发现 当我们使用 Query Builder s. term Query 方法对指定的字段进行精准查询时,如果查询的条件为英文字母时,是没有问题的 当查询条件为中文时,则可能会查询不出数据,如下:当algorithmTag为中文时,即使es中有对应的记录,也是查询不出来的 @Override public List<ESXTopicIndex> listByAlgorithmTag(String algorithmTag, int from, int size, int sta
解决方法:使用match Query 查询 Match Query Builder term Query Builder = Query Builder s.match Query ("字段","查询的值"); match Query :会将 搜索 词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到。 term Query :不会对 搜索 词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹...
Term Query Builder : 词条查询是 ElasticSearch 的一个简单查询。它仅匹配在给定字段中含有该词条的文档,而且是确切的、未经分析的词条。 term 查询会查找我们设定的准确值。 term 查询本身很简单,它接受一个字段名和我们希望查找的值。 Term s Query Builder : 词条查询( Term Query )允许匹配单个未经分析的词条,多词条查询( Term s Query )可以用...
"type": "text",//type为keyword不可设置分词器 "analyzer": "ik_max_word",//设置分词器 ik分词器 "index": true, "store": false [/code]