Elasticsearch Java API连接与文档CRUD操作指南
需积分: 1 40 浏览量
更新于2024-07-19
收藏 49KB DOCX 举报
"Elasticsearch Java API使用指南"
在本文中,我们将探讨Elasticsearch Java API的使用,重点关注如何连接到Elasticsearch集群以及执行基本的文档操作,包括创建、读取、更新和删除(CRUD)。
### 1. 集群连接
#### 1.1 作为Elasticsearch节点
Elasticsearch节点是集群中的工作单元,它们负责存储数据并参与集群的通信。在Java中,你可以通过`NodeBuilder`来创建一个节点并连接到指定的集群。以下代码示例展示了如何设置一个名为"escluster2"的节点,并开启客户端模式(client mode):
```java
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
import org.elasticsearch.client.Client;
import org.elasticsearch.node.Node;
Node node = nodeBuilder()
.clusterName("escluster2") // 设置集群名称
.client(true) // 启用客户端模式
.node();
Client client = node.client(); // 获取客户端实例
```
#### 1.2 使用Transport连接
另一种连接方式是作为Transport客户端,它不实际存储数据,而是通过网络与集群中的其他节点通信。以下代码展示了如何创建一个TransportClient,并连接到运行在本地IP地址127.0.0.1的端口9300上的"escluster2"集群:
```java
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", "escluster2") // 设置集群名称
.build();
TransportClient client = new TransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300)); // 添加节点地址
```
### 2. 文档的CRUD操作
#### 2.1 查询文档
使用Elasticsearch的Java API查询文档,可以调用`prepareGet`方法来构建请求。以下示例展示了如何查询索引为"library"、类型为"book"、ID为"1"的文档,并获取"titile"字段和原始源数据:
```java
import org.elasticsearch.action.get.GetResponse;
GetResponse response = client.prepareGet("library", "book", "1")
.setFields("title", "_source") // 指定返回的字段
.execute().actionGet();
```
#### 2.2 索引文档
索引新文档或更新现有文档,可以使用`prepareIndex`方法。以下代码展示了如何将一个图书对象(Book)索引到"library"索引:
```java
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.index.IndexResponse;
// 假设Book类已定义,包含title、author等属性
Book book = new Book("Title", "Author");
IndexRequestBuilder request = client.prepareIndex("library", "book", "1");
request.setSource(book); // 将Book对象序列化并作为源数据
IndexResponse response = request.execute().actionGet();
```
在处理完文档操作后,别忘了关闭客户端和节点以释放资源:
```java
client.close();
node.close();
```
通过这些基本的API,你可以轻松地在Elasticsearch集群上执行各种操作。随着对API的深入理解和实践,你可以实现更复杂的功能,如批量操作、聚合查询、脚本计算等,从而充分利用Elasticsearch的强大功能。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-07-25 上传
2023-05-26 上传
2024-06-20 上传
2021-05-13 上传
2023-08-12 上传
2021-04-28 上传
kfjsdokfjsd
- 粉丝: 1
- 资源: 10
最新资源
- 行业分类-设备装置-航天遥感大相对孔径宽视场高分辨率成像光谱仪光学系统.zip
- AppLock:对于trainimg,我可以自定义视图功能
- 华为简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- zenodo:将数据(或任何研究对象)存入 Zenodo
- osc-delft.github.io:代尔夫特开放科学社区的在线主页
- 形状理论
- MM32SPIN0x(n) 库函数和例程.rar
- asp源码-CITMS公司客户信息与追踪管理系统 v3.0.zip
- BeautyForestAgent4
- jwt:适用于PHP的JWT(JSON网络令牌)库
- C ++中的Vista Goodies:在UI中使用Glass
- jcr-criteria:使用Java代码的JCR查询
- Notes_DataStructure_and_Algorithms:数据结构和算法的注释
- LCD液晶显示屏(介绍及程序GOOD).zip
- PjSIP:该项目构建了一个提供 sip 连接功能的 iOS 静态库。 它公开了 DXIPJSipManager 类,该类可用于将 iOS 应用程序连接到 sip 服务器
- asp源码-CFUpdate asp 批量上传客户端组件 for ASP v1.22.zip