ElasticSearch Java Api(二) -检索索引库
2017-11-15 21:28
417 查看
上篇博客记录了如何用java调用api把数据写入索引,这次记录下如何搜索。
2
3
4
5
6
7
一次查询可分为下面四个步骤:
1.创建连接ElasticSearch服务的client.
索引在ElasticSearch服务器上,进行索引的查询首先要和服务器创建连接,这是第一步。
2.创建QueryBuilder.
QueryBuilder可以设置单个字段的查询,也可以设置多个字段的查询.
e.g.1: 查询title字段中包含
e.g.2: 查询title字段或content字段中包含
3.执行查询
通过client设置查询的index、type、query.返回一个SearchResponse对象:
4.处理查询结果
SearchResponse对象的getHits()方法获取查询结果,返回一个SearchHits的集合,遍历集合获取查询的文档信息:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
查询结果:
2
3
4
5
6
7
一、准备数据
String data1 = JsonUtil.model2Json(new Blog(1, "git简介", "2016-06-19", "SVN与Git最主要的区别...")); String data2 = JsonUtil.model2Json(new Blog(2, "Java中泛型的介绍与简单使用", "2016-06-19", "学习目标 掌握泛型的产生意义...")); String data3 = JsonUtil.model2Json(new Blog(3, "SQL基本操作", "2016-06-19", "基本操作:CRUD ...")); String data4 = JsonUtil.model2Json(new Blog(4, "Hibernate框架基础", "2016-06-19", "Hibernate框架基础...")); String data5 = JsonUtil.model2Json(new Blog(5, "Git基本知识git", "2016-06-19", "Shell是什么...")); String data6 = JsonUtil.model2Json(new Blog(6, "C++基本知识", "2016-06-19", "Shell是什么...")); String data7 = JsonUtil.model2Json(new Blog(7, "Mysql基本知识", "2016-06-19", "git是什么..."));1
2
3
4
5
6
7
二、查询
一次查询可分为下面四个步骤:1.创建连接ElasticSearch服务的client.
索引在ElasticSearch服务器上,进行索引的查询首先要和服务器创建连接,这是第一步。
Client client = TransportClient.builder().build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
2.创建QueryBuilder.
QueryBuilder可以设置单个字段的查询,也可以设置多个字段的查询.
e.g.1: 查询title字段中包含
hibernate关键字的文档:
QueryBuilder qb1 = termQuery("title", "hibernate");
e.g.2: 查询title字段或content字段中包含
git关键字的文档:
QueryBuilder qb2= QueryBuilders.multiMatchQuery("git", "title","content");
3.执行查询
通过client设置查询的index、type、query.返回一个SearchResponse对象:
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(qb2).execute() .actionGet();
4.处理查询结果
SearchResponse对象的getHits()方法获取查询结果,返回一个SearchHits的集合,遍历集合获取查询的文档信息:
SearchHits hits = response.getHits();
三、java代码实现
package cn.com.bropen.es;1
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import static org.elasticsearch.index.query.QueryBuilders.*;
public class ElasticSearchGet {
public static void main(String[] args) {
// client startup
try {
Client client = TransportClient.builder().build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
QueryBuilder qb1 = termQuery("title", "hibernate");QueryBuilder qb2= QueryBuilders.multiMatchQuery("git", "title","content");
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(qb2).execute() .actionGet();
SearchHits hits = response.getHits();if (hits.totalHits() > 0) {
for (SearchHit hit : hits) {
System.out.println("score:"+hit.getScore()+":\t"+hit.getSource());// .get("title")
}
} else {
System.out.println("搜到0条结果");
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
查询结果:
log4j:WARN No appenders could be found for logger (org.elasticsearch.plugins). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. score:0.5: {posttime=2016-06-19, id=1, title=git简介, content=SVN与Git最主要的区别...} score:0.17673586: {posttime=2016-06-19, id=7, title=Mysql基本知识, content=git是什么...} score:0.049935166: {posttime=2016-06-19, id=5, title=Git基本知识git, content=Shell是什么...}1
2
3
4
5
6
7
相关文章推荐
- ElasticSearch Java Api(二) -检索索引库
- ElasticSearch Java Api -检索索引库
- ElasticSearch Java Api(二) -检索索引库
- ElasticSearch Java Api(三) -更新索引库
- ElasticSearch Java Api(三) -更新索引库
- ElasticSearch API for JAVA 学习笔记
- elasticsearch java api使用,es java封装
- elasticSearch Java Api使用
- elasticsearch java api 5.5.1 依赖
- ElasticSearch Java API
- Elasticsearch java api(五) Bulk批量索引
- Elasticsearch java API (12)Search API MultiSearch API
- Elasticsearch java API (24)查询 DSL Specialized(专业)查询
- ElasticSearch Java API
- Elasticsearch java API (20)查询 DSL
- Elasticsearch java API (6) index API
- ElasticSearch Java API之滚动搜索(Scroll API)
- ElasticSearch Java API
- Elasticsearch java API (25)查询 DSL Span(跨度)查询
- ElasticSearch Java Api(一) -创建索引