你不得不关注的Elasticsearch Top X关键指标( 三 )


如下示例 , 可以将 cont 字段的 index 属性值设置为 false , 这样 , cont 字段将不会被搜索 。
PUT blog_index{"mappings": {"properties": {"cont": {"type": "text","index": false}}}}如果执意要检索 cont 字段上的数据 , 会报错并返回如下内容:
"reason": "Cannot search on field [cont] since it is not indexed."一图胜千言 , 建模的时候仔细过一遍如下这张图 。
你不得不关注的Elasticsearch Top X关键指标文章插图
因此 , 强烈建议你根据实际业务场景 , 以最小化存储、最大化集群写入和搜索性能为前提对数据进行合理的建模、合理的设置 Mapping 中的各个字段的类型 。
7、数据搜索性能指标Elasticsearch 中的搜索请求将发送到索引中的所有分片(主分片或副本分片) 。 然后 , 接收到该请求的节点将汇集所有分片的结果 , 并将结果返回给调用的应用程序 。
分片会消耗 CPU / 内存资源 。 因此 , 如果分片过多 , 则可能降低查询性能 。
如果集群的更新操作频繁 , 则可能会影响搜索 SLA 。 通过适当地配置和水平扩展集群 , 可以提升数据写入和集群检索性能 。
7.1 使用过滤限定返回文档数量根据我搜索性能调优的经验 , 强烈建议你通过添加适当的过滤器(filters)来限制从搜索查询中返回的文档数量 。 应用过滤器后 , 仅针对有限的一组文档计算分数 , 这将提高查询性能 。
你还应该监视搜索延迟和搜索速率指标 , 以调查与搜索功能相关的性能问题 。
这里说的核心是:不要动不动就返回全量数据 , 而是发挥倒排索引和搜索的优势 , 根据业务场景最小化返回满足给定条件的数据 。
7.2 启用慢查询日志建议你在 Elasticsearch 集群中启用慢速查询日志 , 以解决性能问题并捕获运行时间较长或超过设置阈值的查询 。
例如 , 如果您的搜索SLA为 2 秒 , 则可以按以下方式配置搜索查询 , 超过该阈值的任何查询都将被记录 。
PUT my_index/_settings{"index.search.slowlog.threshold.query.warn" : "2s"}8、小结【你不得不关注的Elasticsearch Top X关键指标】在本文中 , 介绍了一些从搜索和索引角度优化 Elasticsearch 性能的最关键的指标 。 总结一下 , 关键要点如下:

  • 集群中具有专用的主节点和数据节点 , 以确保最佳的集群性能 。
  • 通过在集群中添加数据节点并增加副本分片数量来提升集群的高可用性 。
  • 搜索查询必须命中每个分片(主分片或者副本分片) , 因此分片过多会使搜索变慢 。
  • 慢查询和索引日志可用来解决搜索和索引性能问题 。
  • 确保你的Elasticsearch集群在分片、数据节点和主节点的数量上合理性和正确性 。
  • 通过利用批量请求、使用多线程写入并水平扩展集群来优化 Elasticsearch 索引性能 。