es 查询 多线程_ES系列终章索引的存储

本文介绍了Elasticsearch索引的存储结构,包括不变性、索引数据的写入(涉及translog)、segment的管理、索引数据的删除和更新过程。强调了segment数量过多对性能的影响以及merge机制的重要性。同时提到了translog在确保数据可靠性中的作用,以及删除和更新文档时如何处理。
摘要由CSDN通过智能技术生成

1a16962d2edf485ce03ac82b78da0a75.png

        哈喽大家好,不知不觉半年过去了,es也迎来了最终章。话不多说,开始整。

        今天的话,咱们一起聊聊索引的存储吧。对了,大家知道es是怎么分配文档写入哪个分片的吗?其实遵循的原理于之前聊过的map比较像的。

shard = hash(routing) % number_of_primary_shards

routing字段默认为id。

那索引的物理结构是什么样的呢?

Lucene有2种文件格式,是根据CompoundFile 来判断的。

CompoundFile == false

7e59f88de99a1444fa3a97a6b466b333.png

CompoundFile == true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,没有找到关于ES多线程分组分页查询的信息。不过,ES支持多线程查询和分组分页查询,可以分别介绍一下。 1. ES多线程查询 ES支持多线程查询,可以通过设置线程池来控制并发查询的数量。以下是一个使用Python Elasticsearch库进行多线程查询的例子: ```python from elasticsearch import Elasticsearch from elasticsearch.helpers import parallel_bulk from multiprocessing import Pool es = Elasticsearch() def process_data(data): # 处理数据的函数 pass def index_data(data): # 索引数据的函数 pass def run_query(query): # 运行查询的函数 pass def run_parallel_bulk(data): with Pool(processes=4) as pool: for success, info in parallel_bulk(es, data, index='my-index', chunk_size=1000, thread_count=4): if not success: print('A document failed:', info) ``` 在上面的例子中,我们使用了Python的multiprocessing库来创建一个进程池,然后使用Elasticsearch的parallel_bulk函数来并发地索引数据。 2. ES分组分页查询 ES支持分组分页查询,可以使用Elasticsearch的search方法来实现。以下是一个使用Python Elasticsearch库进行分组分页查询的例子: ```python from elasticsearch import Elasticsearch es = Elasticsearch() def search_data(): query = { "size": 0, "aggs": { "group_by_field": { "terms": { "field": "my_field", "size": 10 }, "aggs": { "group_by_date": { "date_histogram": { "field": "my_date_field", "interval": "day" }, "aggs": { "sum_by_field": { "sum": { "field": "my_sum_field" } } } } } } } } res = es.search(index="my-index", body=query) return res ``` 在上面的例子中,我们使用了Elasticsearch的聚合功能来进行分组分页查询。我们首先按照my_field字段进行分组,然后按照my_date_field字段进行日期直方图聚合,最后对my_sum_field字段进行求和聚合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值