elasticsearch增删改查【存储结构与性能优化】存储结构理解
发布时间: 2024-03-19 21:28:12 阅读量: 6 订阅数: 14
# 1. Elasticsearch 简介
- 1.1 什么是 Elasticsearch
- 1.2 Elasticsearch 的常见应用场景
# 2. Elasticsearch 的增删改查操作
在 Elasticsearch 中,对于数据的操作主要包括增加、删除、更新和查询等操作。接下来我们将详细讨论 Elasticsearch 中的增删改查操作及其相关代码示例。
# 3. Elasticsearch 的存储结构
Elasticsearch 作为一款开源的分布式搜索引擎,在存储数据时采用了特殊的结构,包括索引、文档与分片等。同时,倒排索引是 Elasticsearch 实现高效搜索的核心原理之一。让我们深入了解 Elasticsearch 的存储结构。
#### 3.1 索引、文档与分片
在 Elasticsearch 中,数据被组织在索引(Index)中,每个索引可以包含多个类型(Type),而每个类型则包含多个文档(Document)。文档是 Elasticsearch 存储的基本单位,通常以 JSON 格式表示。当数据被索引时,Elasticsearch 会将文档划分为多个分片(Shard),每个分片可以存储一部分数据。
让我们通过示例来演示索引、文档和分片的概念:
```python
from elasticsearch import Elasticsearch
# 连接到本地的 Elasticsearch 实例
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
# 创建一个名为 "my_index" 的索引,并指定分片数量为 3,副本数量为 1
es.indices.create(index='my_index', body={
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
})
# 索引一份名为 "doc1" 的文档到 "my_index" 索引中
es.index(index='my_index', doc_type='_doc', id=1, body={
"title": "Sample Document",
"content": "This is a sample document for demonstration"
})
# 获取文档
doc = es.get(index='my_index', doc_type='_doc', id=1)
print(doc)
```
**代码说明**:
1. 创建了一个名为 "my_index" 的索引,指定了分片数量为 3,副本数量为 1。
2. 向索引中添加了一份名为 "doc1" 的文档。
3. 获取了刚刚添加的文档并打印出来。
**结果说明**:
通过上述代码,我们成功创建了一个索引并添加了一个文档,然后获取该文档的内容并将其打印出来。
#### 3.2 倒排索引的原理与作用
倒排索引(Inverted Index)是 Elasticsearch 中用于实现快速搜索的关键技术。它将文档中的每个词都映射到包含它的所有文档的列表中。通过倒排索引,Elasticsearch 能够快速定位包含搜索词的文档。
让我们通过示例来演示倒排索引的作用:
```python
# 在 "my_index" 索引中搜索包含关键词 "sample" 的文档
result = es.search(index='my_index', body={
"query": {
"match": {
"content": "sample"
}
}
})
print(result)
```
**代码说明**:
1. 使用搜索关键词 "sample"
0
0