elasticsearch增删改查【删除数据】删除条件数据
发布时间: 2024-03-19 21:22:42 阅读量: 47 订阅数: 36
# 1. 理解Elasticsearch
Elasticsearch是一个开源的分布式搜索和分析引擎,是基于Lucene库构建的。它提供了一个分布式多用户能力的全文搜索引擎,通过RESTful Web接口实现。Elasticsearch是一个实时的分布式搜索分析引擎,每一条数据都是实时索引的。它的特点包括高可靠性、高性能、水平扩展、多数据源、多种查询方式等。
#### 1.1 什么是Elasticsearch
Elasticsearch是一个开源搜索引擎,建立在一个全文搜索引擎库Apache Lucene基础之上。它提供了一个分布式多用户能力的实时搜索和分析功能,支持多种方式的搜索请求。
#### 1.2 Elasticsearch的特点和优势
- 高可靠性:数据自动分片、冗余存储,保证数据不丢失。
- 高性能:基于倒排索引,快速检索数据。
- 水平扩展:支持水平扩展,轻松扩展集群规模。
- 多数据源:支持结构化和非结构化数据索引。
- 多种查询方式:支持全文搜索、精确查询、分析查询等。
#### 1.3 Elasticsearch的基本概念
- Document(文档):数据的最小单位,以JSON格式表示。
- Index(索引):一组相关文档的集合,类似于关系数据库中的数据库。
- Type(类型):索引中的逻辑分类,可以用来过滤文档。
- Shard(分片):将大的索引划分成小的部分,分布到不同节点上。
- Replica(副本):每个分片的复制品,提高数据的可靠性和查询性能。
在接下来的章节中,我们将深入探讨Elasticsearch的数据操作基础、删除数据操作详解、删除条件数据技巧等内容。
# 2. Elasticsearch数据操作基础
- **2.1 数据的增加(Index)操作**
- 代码示例(Python):
```python
from elasticsearch import Elasticsearch
es = Elasticsearch()
doc = {
"name": "John Doe",
"age": 25,
"email": "johndoe@example.com"
}
res = es.index(index='my_index', id=1, body=doc)
```
- 注释:以上代码是向名为'my_index'的索引中插入文档的示例。
- 代码总结:使用`es.index()`方法向Elasticsearch中索引添加文档。
- 结果说明:成功向索引中添加了id为1的文档。
- **2.2 数据的删除(Delete)操作**
- 代码示例(Java):
```java
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.*;
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200, "http")).build();
DeleteRequest request = new DeleteRequest("my_index", "1");
DeleteResponse deleteResponse = restClient.delete(request);
```
- 注释:以上代码演示了通过REST客户端使用Java删除Elasticsearch中的文档。
- 代码总结:通过构建`DeleteRequest`对象并调用`restClient.delete(request)`方法来删除文档。
- 结果说明:成功删除了id为1的文档。
- **2.3 数据的更新(Update)操作**
- 代码示例(Go):
```go
package main
import (
"context"
"github.com/olivere/elastic/v7"
)
func main() {
client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200"))
if err != nil {
// 处理错误
panic(err)
}
updateDoc := map[string]interface{}{"age": 26}
_, err = client.Update().Index("my_index").Id("1").Doc(updateDoc).Do(context.Background())
if err != nil {
// 处理更新错误
panic(err)
}
}
```
- 注释:以上代码展示了使用Go语言更新Elasticsearch中文档的操作。
- 代码总结:利用`client.Update()`方法传入更新
0
0