【问题标题】:Elastic search - caching results for queries with size and from parameters弹性搜索 - 缓存具有大小和参数的查询的结果
【发布时间】:2017-08-02 22:07:40
【问题描述】:

我正在尝试优化查询的性能。我的查询有排序和聚合。此外,我指定了 from 和 size 参数,因为我需要分批获取数据。

我正在使用请求缓存来确保不会每次都执行聚合。但是,我一直没能找到缓存查询数据的方法。

看过: https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-request-cache.html

"默认情况下,requests缓存只会缓存搜索结果 请求size=0,所以它不会缓存命中,但它会缓存 hits.total、聚合和建议。”

有没有办法在这种情况下缓存搜索结果?

示例查询:

GET myIndex/_search?request_cache=true
{
    "size": 20,
    "from": 0,
    "query": { ... },
    "sort": { ... },
    "aggregations": { ... }
}

【问题讨论】:

    标签: performance elasticsearch


    【解决方案1】:

    这个假设仍然成立。一种解决方法可能是发送两个查询,一个搜索查询和一个聚合查询,以便可以缓存聚合部分。

    你有没有发现什么是缓慢的部分?搜索还是聚合?

    【讨论】:

    • 搜索速度很慢。 Aggs 非常快。我的查询有一个排序,也有对 inner_hits 的提取。
    • 您可以使用配置文件 API 或安装 kibana x-pack 并为此 API 提供一个 UI,以查看查询的哪些部分运行缓慢。这可能有助于决定是否需要更改索引结构以进行优化。也许有更多的内存来拥有更多的文件系统缓存来缓存文档值以进行排序可能会有所帮助,从远处很难分辨。
    • 谢谢。我使用了配置文件 api,细分显示 create_weight 和 build_scorer 占用了我的查询的大部分时间。
    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2021-02-10
    • 1970-01-01
    • 2015-06-21
    • 2014-10-10
    • 1970-01-01
    • 2023-03-03
    • 2021-07-12
    相关资源
    最近更新 更多