这是关于elasticsearch java api的第一篇教程,陆续会把es的一些心得写出来。
可以通过两种方式来连接到elasticsearch(简称es)集群,第一种是通过在你的程序中创建一个嵌入es节点(Node),使之成为es集群的一部分,然后通过这个节点来与es集群通信。第二种方式是用TransportClient这个接口和es集群通信。
Node方式
创建嵌入节点的方式如下:
- import static org.elasticsearch.node.NodeBuilder.*;
- //启动节点
- Node node = nodeBuilder().node();
- Client client = node.client();
- //关闭节点
- node.close();
当你启动一个节点,它会自动加入同网段的es集群,一个前提就是es的集群名(cluster.name)这个参数要设置一致。
默认的话启动一个节点,es集群会自动给它分配一些索引的分片,如果你想这个节点仅仅作为一个客户端而不去保存数据,你就可以设置把node.data设置成false或 node.client设置成true。下面是例子:
- Node node = nodeBuilder().clusterName(clusterName).client(true).node();
还有一种情况是你并不想把节点加入集群,只想用它进行单元测试时,就要启动一个“本地”的es,这里“本地”指的是在jvm的级别下运行,即两个不同的es节点运行在同一个JVM中时会组成一个集群。它需要把节点的local参数设置成true,下面是例子:
- Node node = nodeBuilder().local(true).node();
TransportClient方式
通过TransportClient这个接口,我们可以不启动节点就可以和es集群进行通信,它需要指定es集群中其中一台或多台机的ip地址和端口,例子如下:
- Client client = new TransportClient()
- .addTransportAddress(new InetSocketTransportAddress("host1", 9300))
- .addTransportAddress(new InetSocketTransportAddress("host2", 9300));
- client.close();
如果你需要更改集群名(默认是elasticsearch),需要如下设置:
- Settings settings = ImmutableSettings.settingsBuilder()
- .put("cluster.name", "myClusterName").build();
- Client client = new TransportClient(settings);
你可以设置client.transport.sniff为true来使客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中,这样做的好处是一般你不用手动设置集群里所有集群的ip到连接客户端,它会自动帮你添加,并且自动发现新加入集群的机器。代码实例如下:
- Settings settings = ImmutableSettings.settingsBuilder()
- .put("client.transport.sniff", true).build();
- TransportClient client = new TransportClient(settings);
http://blog.csdn.net/july_2/article/details/24365689
相关推荐
标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...
Java API是Elasticsearch官方提供的与Elasticsearch服务器进行交互的主要工具,它使得开发者能够用Java语言便捷地进行索引、搜索、聚合等多种操作。 ### 一、Elasticsearch核心概念 1. **节点(Node)**: Elastic...
**Elasticsearch Java API**是Elasticsearch与Java应用程序交互的主要工具,它允许开发者在Java环境中无缝地创建、管理和查询Elasticsearch索引。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,用于...
- 修改`elasticsearch.yml`中的`cluster.name`设置集群名,避免与其他Elasticsearch实例冲突。 - 设置环境变量`JAVA_HOME`指向JDK的安装路径,确保Elasticsearch能识别Java运行环境。 3. **启动与管理**: - ...
**Elasticsearch Java API**是Elasticsearch官方提供的用于与Elasticsearch服务器进行交互的Java客户端库。在Java应用程序中,我们通常会使用这个API来创建、查询、更新和删除索引中的数据。Elasticsearch 2.3版本的...
它的Java API是开发人员与Elasticsearch进行交互的主要工具,提供了丰富的功能,使得在Java环境中操作Elasticsearch变得简单而高效。本文将深入探讨离线下载的Java API文档,并解析其中的关键知识点。 **1. Elastic...
Java API 是 Elasticsearch 提供的用于与集群交互的主要接口,允许开发者在 Java 应用程序中方便地集成 Elasticsearch 功能。 在 Java 应用程序中使用 Elasticsearch,开发者可以利用 Java API 来执行索引、搜索、...
10. **数据导入与查询**:数据导入通常通过Logstash或Beats完成,而查询和分析则可通过Kibana的图形界面实现,也可以使用RESTful API直接与Elasticsearch交互。 总之,Elasticsearch 7.8.1在Linux上的部署涉及下载...
总结, 本文详细介绍了使用 Java API 实现与 Elasticsearch 集群交互的方法, 包括连接集群、定义索引字段、索引数据、删除数据、搜索以及数据同步等方面的内容。这些技术对于构建高效稳定的搜索系统至关重要。
启动Elasticsearch后,可以通过HTTP RESTful API来与之交互,执行索引、搜索、聚合等操作。7.14.0版本可能引入了新的API或改进了现有API的性能,确保查阅官方文档以了解详情。 Elasticsearch 7.14.0还可能包含对旧...
**JDBC (Java Database Connectivity)** 是Java平台中用于与关系数据库交互的标准API。它允许Java应用程序通过编写SQL语句来访问和操作数据库。Elasticsearch-JDBC利用JDBC接口,可以将来自任何支持JDBC的数据源的...
Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful API、实时性、高可用性和可扩展性著称。此压缩包"elasticsearch-7.9.0-linux-x86_64.rar"包含了适用于Linux平台的Elasticsearch 7.9.0版本。这个版本在...
2. RESTful API:Elasticsearch通过HTTP和JSON接口与外界交互,采用RESTful风格,使得操作简单易用,支持各种编程语言。 3. 倒排索引:Elasticsearch使用倒排索引来快速进行全文搜索,将每个词对应到包含它的文档...
Elasticsearch SQL是将SQL查询语句引入到Elasticsearch中的一个插件,它使得习惯于使用SQL的用户能够更加方便地与Elasticsearch进行交互。这个"elasticsearch-sql-7.9.2.0(maven包)"是针对Elasticsearch 7.9.2版本的...
此最新版的"windows elasticsearch-7.12.1-windows-x86_64.zip"是专为Windows 64位操作系统设计的版本,集成了所有必要的组件,包括Java运行环境,使得用户在Windows环境下也能便捷地部署和运行Elasticsearch。...
Elasticsearch还支持RESTful API,这使得与它交互变得简单直观,无论是添加、更新、删除数据,还是执行复杂的搜索查询,都可以通过HTTP请求完成。此外,Elasticsearch提供了强大的聚合分析功能,可以对数据进行统计...
3. **RESTful API**:Elasticsearch通过HTTP和JSON接口提供RESTful服务,使得与之交互变得简单。开发者可以用任何支持HTTP的编程语言来操作Elasticsearch,如Python、Java、JavaScript等。 4. **数据结构丰富**:...
3. **自动发现与动态集群形成**:Elasticsearch节点之间通过网络通信自动发现彼此,从而形成集群。新节点加入或离开时,集群会自动调整以保持数据平衡和可用性。 4. **近实时搜索**:Elasticsearch提供了几乎实时的...