Elasticsearch搜索原理及步骤详细解析是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计853个文字,预计阅读时间需要4分钟。
Elasticsearch 8.1 中,当进行搜索时,经常会使用索引+星号(如 aaaa-*)的形式进行时间范围搜索。这种查询是如何处理的呢?
- 对匹配的索引进行搜索:当使用 aaaa-* 时,Elasticsearch 会搜索所有以 aaaa 开头的索引。这意味着不仅会搜索 aaaa 这个索引,还会搜索 aaaa_2021, aaaa_2022 等以 aaaa 开头的所有索引。
- 仅基于时间范围的搜索:Elasticsearch 会进一步限制搜索结果,仅包含特定时间范围内的数据。例如,如果你在查询中指定了时间范围,那么即使索引名称符合 aaaa-*,Elasticsearch 也只会返回该时间范围内的文档。
- 无时间范围搜索时:如果查询中没有指定时间范围,那么默认情况下,Elasticsearch 会搜索所有匹配索引下的所有文档,不论其时间。
简而言之,aaaa-* 请求会首先对符合模式的索引进行搜索,然后根据是否存在时间范围来决定搜索的文档。
本文基于elasticsearch8.1。在es搜索中,经常会使用索引+星号,采用时间戳来进行搜索,比如aaaa-*在es中是怎么处理这类请求的呢?是对匹配的进行搜索呢还是仅仅根据时间找出索引,然后才遍历索引进行搜索。在了解其原理前先了解一些基本知识。
SearchTypeQUERY_THEN_FETCH(默认):第一步,先向所有的shard发出请求,各分片只返回排序和排名相关的信息(注意,不包括文档document),然后按照各分片返回的分数进行重新排序和排名,取前size个文档。然后进行第二步,去相关的shard取document。这种方式返回的document与用户要求的size是相等的。
本文共计853个文字,预计阅读时间需要4分钟。
Elasticsearch 8.1 中,当进行搜索时,经常会使用索引+星号(如 aaaa-*)的形式进行时间范围搜索。这种查询是如何处理的呢?
- 对匹配的索引进行搜索:当使用 aaaa-* 时,Elasticsearch 会搜索所有以 aaaa 开头的索引。这意味着不仅会搜索 aaaa 这个索引,还会搜索 aaaa_2021, aaaa_2022 等以 aaaa 开头的所有索引。
- 仅基于时间范围的搜索:Elasticsearch 会进一步限制搜索结果,仅包含特定时间范围内的数据。例如,如果你在查询中指定了时间范围,那么即使索引名称符合 aaaa-*,Elasticsearch 也只会返回该时间范围内的文档。
- 无时间范围搜索时:如果查询中没有指定时间范围,那么默认情况下,Elasticsearch 会搜索所有匹配索引下的所有文档,不论其时间。
简而言之,aaaa-* 请求会首先对符合模式的索引进行搜索,然后根据是否存在时间范围来决定搜索的文档。
本文基于elasticsearch8.1。在es搜索中,经常会使用索引+星号,采用时间戳来进行搜索,比如aaaa-*在es中是怎么处理这类请求的呢?是对匹配的进行搜索呢还是仅仅根据时间找出索引,然后才遍历索引进行搜索。在了解其原理前先了解一些基本知识。
SearchTypeQUERY_THEN_FETCH(默认):第一步,先向所有的shard发出请求,各分片只返回排序和排名相关的信息(注意,不包括文档document),然后按照各分片返回的分数进行重新排序和排名,取前size个文档。然后进行第二步,去相关的shard取document。这种方式返回的document与用户要求的size是相等的。

