gpt4 book ai didi

elasticsearch - Elasticsearch返回结果的上下文(命中前后10行)

转载 作者:行者123 更新时间:2023-12-03 00:35:10 27 4
gpt4 key购买 nike

查询elasticsearch时,仅返回匹配的文档。如何获取匹配内容,例如匹配前后的10个文档?

例如,我已将5条日志插入elasticsearch中:

{"log": "a"}
{"log": "b"}
{"log": "c"}
{"log": "d"}
{"log": "e"}

我搜索了 "query": { "match": { "log": "e" } },es将返回第5个文档。但是,我可能希望前面的4条日志进行调试,是否可以返回上下文?

最佳答案

也许我的答案可能不是您的完整答案,但我想分享我的观点以解决此问题。

首先,您想要获得类似grep应用程序afterbefore功能的结果。据我所知,Elasticsearch可以根据与文档匹配的术语查找文档,而不会根据文档的顺序考虑最近的文档。我认为,可以通过两种方法解决此问题。第一个是在摄取时将相对数据填充到文档中,第二个是执行第二个查询以查找相对数据。

对于第一种方法,您将拥有不必要的重复数据,这将导致性能问题或需要更多的存储,cpu或ram等。但是您可以通过一个查询来获取数据和相关数据。要解决此问题,您可以在将日志提取到Elasticsearch时使用logstash的https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html过滤器。

第二种方法,你会很酷:)。摄取部分没有任何变化,但是您应该更改应用程序的表示形式部分。另一方面,在Kibana上使用ElasticStack 5.4时,有一个新功能,其中whitsh是Document Context。您可以轻松地找到特定文档周围的文档。我还没有尝试过,但我想,它可能与第二种方法相同。

更新:

我已经检查了Kibana周围文档功能,它使用search_after api。

关于elasticsearch - Elasticsearch返回结果的上下文(命中前后10行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44363913/

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