ElasticSearch Java Api(二) -检索索引库
生活随笔
收集整理的這篇文章主要介紹了
ElasticSearch Java Api(二) -检索索引库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、準備數據
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
二、查詢
一次查詢可分為下面四個步驟:
-
1.創建連接ElasticSearch服務的client.
Client client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
索引在ElasticSearch服務器上,進行索引的查詢首先要和服務器創建連接,這是第一步。 -
2.創建QueryBuilder.
QueryBuilder qb1 = termQuery("title", "hibernate");
QueryBuilder可以設置單個字段的查詢,也可以設置多個字段的查詢.
e.g.1: 查詢title字段中包含hibernate關鍵字的文檔:e.g.2: 查詢title字段或content字段中包含Git關鍵字的文檔:
QueryBuilder qb2= QueryBuilders.multiMatchQuery("git", "title","content"); -
3.執行查詢
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(qb2).execute().actionGet();
通過client設置查詢的index、type、query.返回一個SearchResponse對象: -
4.處理查詢結果
SearchHits hits = response.getHits();
SearchResponse對象的getHits()方法獲取查詢結果,返回一個SearchHits的集合,遍歷集合獲取查詢的文檔信息:
三、java代碼實現
package cn.com.bropen.es;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 startuptry {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();}}}- 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是什么...}- 4
總結
以上是生活随笔為你收集整理的ElasticSearch Java Api(二) -检索索引库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 很强大的一个jquery分页插件
- 下一篇: ElasticSearch Java A