gpt4 book ai didi

elasticsearch - 检查文档是否是Elasticsearch查询的一部分?

转载 作者:行者123 更新时间:2023-12-02 22:26:52 25 4
gpt4 key购买 nike

好奇是否有某种方法可以检查文档ID是否是大型(超过一百万个结果)Elasticsearch查询/过滤器的一部分。
本质上,我将拥有一组相关的文档ID,并且只在它们属于较大查询时才返回它们。希望能做数据库方面。从理论上讲,这似乎是可行的,因为ES必须缓存与大滚动有关的内容。

最佳答案

这是一个有趣的用例,但是您需要了解,Elasticsearch(ES)不会在搜索结果中返回所有匹配的文档ID,并且默认情况下仅返回响应中的10个文档,可以通过size parameter进行更改。
而且,如果您增加大小参数并在查询中包含数百万个匹配的文档,则ES查询性能将非常糟糕,并且如果您频繁触发此类查询(在没有断路器的情况下),甚至可能使整个集群崩溃,因此请务必谨慎。
没错,ES会缓存内容,但是再次提醒您,如果尝试缓存大量数据并且频繁使数据失效,那么您将无法获得所需的性能优势,因此最好针对它进行基准测试。
您已经在正确的使用方法上,滚动API可以迭代数百万个搜索结果,请参阅以下几点以进一步改进。

  • 首先获取搜索结果的计数,该计数包含在eqgreater值的默认搜索响应中,这将使您了解拥有多少搜索结果,可以根据这些搜索结果为后续调用提供size参数以查看您的ID是否存在与否。
  • 查看查询中是否有效利用了filters context(默认情况下缓存在ES中)。
  • 使用数据对一些繁重的滚动API调用进行基准测试。
  • 请引用this线程来微调集群和索引配置,以进一步优化ES响应。
  • 关于elasticsearch - 检查文档是否是Elasticsearch查询的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63006723/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com