`

ElasticSearch的Java Api基本操作入门指南

阅读更多

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(newTimeValue(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最基本的用法。

 

from  http://www.dengchuanhua.com/159.html

分享到:
评论
3 楼 Ann-phei 2018-04-27  
大神 您好~我是博文视点编辑安娜,可否加我微信或QQ 8030 3489
2 楼 feifeiwudi 2017-11-10  
feifeiwudi 写道
发现了一个 Elasticsearch 2.3.3 JAVA api 翻译版的官方文档,还挺不错的,大家可以参考这个文档。
https://www.blog-china.cn/template/documentHtml/1484101683485.html#title_14

1 楼 feifeiwudi 2017-11-10  
发现了一个 Elasticsearch 2.3.3 JAVA api 翻译版的官方文档,还挺不错的,大家可以参考这个文档。
https://www.blog-china.cn

相关推荐

    Elasticsearch 2.1.1 学习资料 java client demo 代码

    Elasticsearch 2.1.1服务端集群搭建.及java客户端demo代码实现。Elasticsearch权威指南(中文版,Elasticsearch java api 学习入门源码部署相关资料

    java8集合源码-udemy_ElasticSearch:udemy_ElasticSearch

    讲座:Elasticsearch 完整指南 重要更新:由于版本 7 类型将被删除,默认类型应替换为_doc类型 第 1 部分 - 入门 第 2 课 - Elasticsearch 介绍 Elasticsearch 是一个分析和全文搜索引擎。 它在应用程序中启用搜索...

    java8stream源码-docker-spring-cqrs-es:具有基于Kafka的事件源的CQRS架构的Docker化实现

    java8流源码Spring CQRS 事件采购 基于 CQRS Kafka 的事件源 API 的 RESTful 后端。 入门 这些说明将为您提供一份项目副本,并在您的本地机器上运行,用于开发和测试目的。 有关如何在实时系统上部署项目的说明,请...

    Weather-App:该项目是使用javascript和webpack构建的。 获取API用于从开放式天气API获取数据,获取的信息用于构建天气预报站点

    入门指南 为了开始该项目: 在您的计算机上安装npm。 克隆 项目内的CD 跑步 npm i 在终端上安装依赖项。 5.运行npm run dev以开始编译。6.打开浏览器以查看更改。 作者 :bust_in_silhouette: 阿德瓦莱·奥罗塔...

    Android入门中文教程

    Beta版的 Android SDK 提供了在Android平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 应用程序框架 支持组件的重用与替换 Dalvik 虚拟机 专为移动设备优化 集成的浏览器 基于开源的WebKit ...

    java词典源码-the-yoruba-dictionary:约鲁巴语词典的源代码

    例如,我们有用于搜索等的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开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 · 应用程序框架 支持组件的重用与替换 · Dalvik 虚拟机 专为移动设备优化 · 集成的浏览器 基于开源的WebKit 引擎 · 优化的图形库 包括定制的...

    springboot参考指南

    连接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参考。

Global site tag (gtag.js) - Google Analytics