1

我已经为我的弹性搜索服务器启用了慢日志,以查看我得到的流量。
这是一些示例输出:

[2013-07-23 06:10:45,213][WARN ][index.search.slowlog.query] [Afari, Jamal] [index_3559_schema1][4] took[107.5micros], took_millis[0], types[some_type], stats[], search_type[QUERY_THEN_FETCH], total_shards[195], source[{"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], extra_source[],
[2013-07-23 06:10:45,214][WARN ][index.search.slowlog.query] [Afari, Jamal] [index_3559_schema1][3] took[155.6micros], took_millis[0], types[some_type], stats[], search_type[QUERY_THEN_FETCH], total_shards[195], source[{"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], extra_source[],
[2013-07-23 06:10:45,214][WARN ][index.search.slowlog.query] [Afari, Jamal] [index_3559_schema1][2] took[107.7micros], took_millis[0], types[some_type], stats[], search_type[QUERY_THEN_FETCH], total_shards[195], source[{"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], extra_source[],
...
[2013-07-22 15:10:45,260][WARN ][index.search.slowlog.fetch] [Afari, Jamal] [index_42044_schema1][3] took[85.3micros], took_millis[0], types[some_type], stats[], search_type[QUERY_THEN_FETCH], total_shards[195], source[{"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], extra_source[],

这些行中的每一行是否意味着 ( index_3559_schema1, index_3559_schema1, index_3559_schema1) 我有一个单独的 HTTP 请求?

index.search.slowlog.query和 和有什么不一样index.search.slowlog.fetch

4

1 回答 1

3

慢日志不是指 http 请求,而是指分片级别的查询。这意味着,如果您查询由 5 个分片组成的索引,您将在日志中为同一查询拥有 5 个条目,每个分片一个,具有不同的分片 id,即出现在索引名称之后的数字。这样您就可以监控每个分片的每个查询的执行情况。

fetch 行是指 fetch 阶段。默认情况下使用 query_then_fetch搜索类型,这意味着如果您查询由 5 个主分片组成的索引(我们假设 0 个副本以使其更简单),查询将在每个分片上执行,这将只返回相关信息,例如文档 ID 及其分数。然后,您使用搜索请求点击的节点将减少这些结果,以便仅返回顶部的结果。在标识需要返回哪些文档的reduce部分之后,只有那些相关的文档才会从它们的分片中获取。那是您在慢速日志中看到获取阶段的时候。

于 2013-07-23T10:44:47.750 回答