开发者学堂课程【ElasticSearch 入门精讲:termQuery】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/631/detail/10008
termQuery
内容介绍:
一、前言
二、演示
一、前言
词条查询是 Elasticsearch 中的一个简单查询。它仅匹配在给定字段中含有该词条的文档,而且是确切的、未经分析的词条。
termQuery("key", obj)完全匹配
termsQuery("key" , obj1, obj2...)一次匹配多个值,只要有一个值是正确的,就可以查询出数据
//SearchResponsesearchResponse= client.prepareSearch("blog2").
setTypes("article")
//.setQuery(QueryBuilders.termQuery("content","
搜索")).get(
);
SearchResponsesearchResponse= client.prepareSearch("blog2").
setTypes("article")
.setQuery(QueryBuilders.termsQuery("content","搜索","全文")).get();
SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象
二、演示
在 Test.java 中输入
/**
*词条检索之 termQuery
*
*需求: 使用 termQuery,查询出 author 中包含有“天”,且包含有“下”的索引信息。
*/
@Test
public void testTermQuery(){
//查询
SearchResponse response = client.prepareSearch(INDEX)
.setTypes(TYPE)
.setQuery(QueryBuilders.termsQuery(name:"author, ...values:"天","下"))
.get();
//显示检索到的信息
SearchHits hits = response.getHits();
for (SearchHit hit : hits){
System.out.println(hit.getSourceAsString());
}
}
运行结果显示
{“name”: “storm”, “author”: “睥睨天下”, “version”: “2.4.6”}
如果查 “天下”呢?修改
.setQuery(QueryBuilders.termsQuery(name:"author, ...values:"天下"))
查询不到,我们看来天下是一个词,但其实天是一个词,下是一个词,需要单独安装分词插件用来确定天下是一个词才可以