首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch lucene,了解用于搜索的代码路径

Elasticsearch lucene,了解用于搜索的代码路径
EN

Stack Overflow用户
提问于 2018-05-24 06:06:30
回答 1查看 217关注 0票数 0

我想了解lucene的每个索引文件(nvd、dvd、tim、doc.主要在ES查询中使用这四个)。例如,假设我的索引有10个文档,并且我正在进行聚合查询。我想了解ES/Lucene是如何在一个查询中访问这四个文件的。

我正在尝试是否可以在我的系统中进行一些优化,以加快查询性能。我的系统主要是一个磁盘密集型系统。我查看了ES代码,了解到QueryPhase是最昂贵的,而且它似乎对我所拥有的面向日志的数据进行了大量的随机访问。

我现在也想更深入地研究lucene级别,并可能调试代码并查看实际操作。Lucene代码没有IndexReader相关类的日志消息。而且,直接调试lucene代码似乎没有什么帮助,因为单元测试不会为tim、doc、nvd、dvd文件创建索引

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-24 09:38:07

据我所知,ES不会在搜索细节上做太多工作,如果你想优化搜索,我的经验是优化你的数据布局,以下是一些重要的lucene文件描述:

(请参阅http://lucene.apache.org/core/7_2_1/core/org/apache/lucene/codecs/lucene70/package-summary.html#package.description):

  1. Term Index(.tip) # ON MEMORY.
  2. Term Dictionary(.tim) # ON DISK.
  3. Frequencies(.doc) # ON DISK.
  4. Per-Document Values(.dvd,.dvm),对聚合非常有用。# ON DISK.
  5. Field Index(.fdx) # ON MEMORY.
  6. Field Data(.fdt),最后这里是从磁盘获取数据。DISK.

上的#

并且有一些要点可以优化性能:

包括尝试使用较小日期类型,例如: INTEGER或LONG values,而不是在不必要的字段上添加STRING.

  • CLOSE索引,同时在您想要在源上包含必需字段的字段上打开sort/aggregation.

  • just,如“"some_necessasy_field"}.

  • only”:{“mappings.

  • split”:使用ES defined mappings.

  • split
  1. on DocValues on DocValues添加您需要的_source索引字段。
  2. add SSD。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50498158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档