ElasticSearch的Java Api基本操作入門指南
ElasticSearch是一個基於Lucene構建的開源,分散式,RESTful搜尋引擎框架。分散式是其最大的特點。安裝比較簡單,如果單機執行的話直接下載解壓,在命令列下執行bin/elasticsearch就行了(win的dos和linux的視窗都行)。它能夠通過http、restful、thrift等方式訪問。不過今天我們看的是使用最普通的java api來測試其功能。
java
api
如果你使用java,Elasticsearch提供兩種內建的客戶端。
Node
client
Transport
client
兩種clients都和叢集通過
9300
埠通訊,使用本地es傳輸協議,
注意:叢集內部節點通過
9300
埠通訊來組成叢集。
java客戶端的版本必須和伺服器節點的版本一致。
1.獲取client例項,連線本地9300埠
1 |
this .client
= new TransportClient() |
2 |
|
3 |
.addTransportAddress( new InetSocketTransportAddress( |
4 |
"localhost" , 9300 )); |
2.生成一個索引。這裡用Map來儲存json資料,然後插入到index為“twitter”的索引裡面,其document為“tweet”,id為“1”。當然,生成json資料的方法很多,朋友們可以檢視相關api。
1 |
public void generateIndex()
{ |
2 |
Map<String,
Object> json = new HashMap<String,
Object>(); |
3 |
json.put( "user" , "kimchy" ); |
4 |
json.put( "postDate" , new Date()); |
5 |
json.put( "message" , "trying
out Elastic Search" ); |
6 |
7 |
IndexResponse
response = this .client |
8 |
.prepareIndex( "twitter" , "tweet" , "1" ).setSource(json) |
9 |
.execute().actionGet(); |
10 |
} |
3.查詢某個索引 ,這個一看就明白。
1 |
public void getIndex()
{ |
2 |
GetResponse
response = client.prepareGet( "twitter" , "tweet" , "1" ) |
3 |
.execute().actionGet(); |
4 |
Map<String,
Object> rpMap = response.getSource(); |
5 |
if (rpMap
== null )
{ |
6 |
System.out.println( "empty" ); |
7 |
return ; |
8 |
} |
9 |
Iterator<Entry<String,
Object>> rpItor = rpMap.entrySet().iterator(); |
10 |
while (rpItor.hasNext())
{ |
11 |
Entry<String,
Object> rpEnt = rpItor.next(); |
12 |
System.out.println(rpEnt.getKey()
+ "
: " +
rpEnt.getValue()); |
13 |
} |
14 |
} |
4. 搜尋,建立一個termQuery查詢,該查詢要求全部匹配才會出結果,如果只要包含關鍵字裡面一部分,可以建立fieldQuery。
1 |
public void searchIndex()
{ |
2 |
3 |
QueryBuilder
qb = QueryBuilders.termQuery( "user" , "kimchy" ); |
4 |
SearchResponse
scrollResp = client.prepareSearch( "twitter" ) |
5 |
.setSearchType(SearchType.SCAN) |
6 |
.setScroll( new TimeValue( 60000 )) |
7 |
.setQuery(qb) |
8 |
.setSize( 100 ).execute().actionGet(); //100
hits per shard will be returned for each scroll |
9 |
//Scroll
until no hits are returned |
10 |
while ( true )
{ |
11 |
scrollResp
= client.prepareSearchScroll(scrollResp.getScrollId()).setScroll( new TimeValue( 600000 )).execute().actionGet(); |
12 |
for (SearchHit
hit : scrollResp.getHits()) { |
13 |
Iterator<Entry<String,
Object>> rpItor = hit.getSource().entrySet().iterator(); |
14 |
while (rpItor.hasNext())
{ |
15 |
Entry<String,
Object> rpEnt = rpItor.next(); |
16 |
System.out.println(rpEnt.getKey()
+ "
: " +
rpEnt.getValue()); |
17 |
} |
18 |
} |
19 |
//Break
condition: No hits are returned |
20 |
if (scrollResp.getHits().hits().length
== 0 )
{ |
21 |
break ; |
22 |
} |
23 |
} |
24 |
} |
5.刪除,刪除的時候要指定Id的,這裡指定id為1.
1 |
public void deleteIndex()
{ |
2 |
DeleteResponse
response = client.prepareDelete( "twitter" , "tweet" , "1" ) |
3 |
.execute() |
4 |
.actionGet(); |
5 |
} |
6.操作完畢後別忘記最後一步:關閉client連線。
1 |
public void closeClient()
{ |
2 |
client.close(); |
3 |
} |
總結:本文純粹科普級,展示了一下ElasticSearch最基本的用法。
相關文章
- 使用 Java API 操作 elasticsearchJavaAPIElasticsearch
- ElasticSearch 2.3.3 java API操作二ElasticsearchJavaAPI
- Elasticsearch 入門實戰(9)--Java API Client 使用二ElasticsearchJavaAPIclient
- Java API——RMIIO入門教程(1)基本介紹JavaAPI
- ElasticSearch基本操作Elasticsearch
- ElasticSearch - 基本操作Elasticsearch
- sap入門--操作指南
- 電商API介面入門指南API
- REST API 最佳入門指南RESTAPI
- Elasticsearch CRUD基本操作Elasticsearch
- nodejs 入門基本操作NodeJS
- ElasticSearch之基本用法APIElasticsearchAPI
- ElasticSearch—— Java APIElasticsearchJavaAPI
- ElasticSearch Java APIElasticsearchJavaAPI
- Elasticsearch 入門實戰(8)--REST API 使用二(Search API)ElasticsearchRESTAPI
- (2)Elasticsearch基本操作整理Elasticsearch
- Redis 入門 - 1(基本 key 操作)Redis
- OpenAI Chat completion API 入門指南OpenAIAPI
- Docker 入門(Mac環境)-part 1 入門基本操作DockerMac
- ElasticSearch Java API使用ElasticsearchJavaAPI
- elasticsearch(二)---基本資料操作Elasticsearch
- Java初學者入門指南Java
- Git基本操作指南Git
- ElasticSearch 入門Elasticsearch
- 我的Elasticsearch入門Elasticsearch
- Elasticsearch Java High Level REST Client(入門)ElasticsearchJavaRESTclient
- Amazon DynamoDB 入門4:專案的基本操作(CRUD)
- Linux軟體包管理的基本操作入門Linux
- Docker 從入門到精通(一)基本操作Docker
- vc入門寶典八(基本操作) (轉)
- java8 Stream APi 入門JavaAPI
- 在JAVA中將Elasticsearch索引載入到Lucene APIJavaElasticsearch索引API
- 通過命令curl 操作ElasticSearch指南Elasticsearch
- Elasticsearch入門教程Elasticsearch
- Elasticsearch 入門使用Elasticsearch
- elasticsearch 入門篇Elasticsearch
- MySQL入門系列:資料庫和表的基本操作MySql資料庫
- Elasticsearch聚合學習之一:基本操作Elasticsearch