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()
|
3 |
.addTransportAddress( new InetSocketTransportAddress(
|
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" );
|
7 |
IndexResponse response = this .client
|
8 |
.prepareIndex( "twitter" , "tweet" , "1" ).setSource(json)
|
9 |
.execute().actionGet();
|
3.查询某个索引 ,这个一看就明白。
1 |
public void getIndex() {
|
2 |
GetResponse response = client.prepareGet( "twitter" , "tweet" , "1" )
|
3 |
.execute().actionGet();
|
4 |
Map<String, Object> rpMap = response.getSource();
|
6 |
System.out.println( "empty" );
|
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());
|
4. 搜索,创建一个termQuery查询,该查询要求全部匹配才会出结果,如果只要包含关键字里面一部分,可以创建fieldQuery。
1 |
public void searchIndex() {
|
3 |
QueryBuilder qb = QueryBuilders.termQuery( "user" , "kimchy" );
|
4 |
SearchResponse scrollResp = client.prepareSearch( "twitter" )
|
5 |
.setSearchType(SearchType.SCAN)
|
6 |
.setScroll( new TimeValue( 60000 ))
|
8 |
.setSize( 100 ).execute().actionGet();
|
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());
|
20 |
if (scrollResp.getHits().hits().length == 0 ) {
|
5.删除,删除的时候要指定Id的,这里指定id为1.
1 |
public void deleteIndex() {
|
2 |
DeleteResponse response = client.prepareDelete( "twitter" , "tweet" , "1" )
|
6.操作完毕后别忘记最后一步:关闭client连接。
1 |
public void closeClient() {
|
总结:本文纯粹科普级,展示了一下ElasticSearch最基本的用法。
from http://www.dengchuanhua.com/159.html
分享到:
相关推荐
Elasticsearch 2.1.1服务端集群搭建.及java客户端demo代码实现。Elasticsearch权威指南(中文版,Elasticsearch java api 学习入门源码部署相关资料
讲座:Elasticsearch 完整指南 重要更新:由于版本 7 类型将被删除,默认类型应替换为_doc类型 第 1 部分 - 入门 第 2 课 - Elasticsearch 介绍 Elasticsearch 是一个分析和全文搜索引擎。 它在应用程序中启用搜索...
java8流源码Spring CQRS 事件采购 基于 CQRS Kafka 的事件源 API 的 RESTful 后端。 入门 这些说明将为您提供一份项目副本,并在您的本地机器上运行,用于开发和测试目的。 有关如何在实时系统上部署项目的说明,请...
入门指南 为了开始该项目: 在您的计算机上安装npm。 克隆 项目内的CD 跑步 npm i 在终端上安装依赖项。 5.运行npm run dev以开始编译。6.打开浏览器以查看更改。 作者 :bust_in_silhouette: 阿德瓦莱·奥罗塔...
Beta版的 Android SDK 提供了在Android平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 应用程序框架 支持组件的重用与替换 Dalvik 虚拟机 专为移动设备优化 集成的浏览器 基于开源的WebKit ...
例如,我们有用于搜索等的elastic-search模块。 webapi-module是使用其他模块构建的,其自身功能是公开字典应用程序通过REST API提供的服务。 website module是字典的最前面的部分。 它还使用webapi-module公开的API...
Solr & Elasticsearch | 分布式全文搜索引擎 | [http://lucene.apache.org/solr/](http://lucene.apache.org/solr/) [https://www.elastic.co/](https://www.elastic.co/) Quartz | 作业调度框架 | ...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 · 应用程序框架 支持组件的重用与替换 · Dalvik 虚拟机 专为移动设备优化 · 集成的浏览器 基于开源的WebKit 引擎 · 优化的图形库 包括定制的...
连接Elasticsearch ii. 29.5.2. Spring Data Elasticseach仓库 ix. 30. 消息 i. 30.1. JMS i. 30.1.1. HornetQ支持 ii. 30.1.2. ActiveQ支持 iii. 30.1.3. 使用JNDI ConnectionFactory iv. 30.1.4. 发送消息 v. ...
dar_es_salaam 一个新的Flutter项目。 入门 该项目是Flutter应用程序的起点。 如果这是您的第一个...要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程,示例,有关移动开发的指南以及完整的API参考。