Elastic: 同一条索引,使用GET _cat/indices?v与GET index/_count查询出来的文档数为什么不同?

简介: 首先我们来看官方文档中对于_cat/indices的解释:原文:These metrics are retrieved directly from Lucene, which Elasticsearch uses internally to power indexing and search. As a result, all document counts include hidden nested documents.

1. 解析

首先我们来看官方文档中对于_cat/indices的解释:
原文:
These metrics are retrieved directly from Lucene, which Elasticsearch uses internally to power indexing and search. As a result, all document counts include hidden nested documents.

译文:
这些指标是直接从Lucene中获取的,Elasticsearch内部使用Lucene来支持索引和搜索。因此,所有的文档计数都包括隐藏的嵌套文档

其实看到官方文档的解释答案已经明了了,我们看到最后一句:使用_cat/indices的查询是会将doc中隐藏的嵌套文档给查出来,看到这里可能不太清楚Nested结构的同学会比较迷糊,简单来说呢,就是当我们使用nested数据类型的时候,除了本身的doc之外,是会创建一个嵌套子对象的doc的,有多少个对象就会创建多少个隐藏嵌套doc

下面我们举例说明

2. 案例

数据

PUT test_nested
{
  "mappings": {
    "properties": {
      "tags": {
        "type": "nested"
      }
    }
  }
}

POST test_nested/_bulk
{"index":{}}
{"my_id":1,"tags":[{"name":"1","title":"1"},{"name":"1","title":"1"}]}
{"index":{}}
{"my_id":1,"tags":{"name":"1","title":"1"}}

_count查询

GET test_nested/_count

结果

{
  "count" : 2,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  }
}

_cat/indices查询

GET _cat/indices?v 

结果
在这里插入图片描述

2.1 解析

我们查看原数据,tags是nested类型的,doc1中tags为数组,下面有两个子对象,因此嵌套隐藏doc为2,doc2中tags下只有一个嵌套子对象{"name":"1","title":"1"},因此隐藏doc为1,加上本身的两个doc,总共的doc数为:2+2+1=5

因此_cat/indices查询的doc数就是5
而_count是不会查询隐藏doc的,所以数量为2

POST test_nested/_bulk
{"index":{}}
{"my_id":1,"tags":[{"name":"1","title":"1"},{"name":"1","title":"1"}]}
{"index":{}}
{"my_id":1,"tags":{"name":"1","title":"1"}}

3 拓展

我们知道join类型也是一对多的结构,但是我们测试可知,join类型并不会创建嵌套隐藏doc,也就是说join类型的GET _cat/indices?v与GET index/_count结构是一致的

目录
相关文章
|
8月前
|
人工智能 NoSQL atlas
|
8月前
Elasticsearch【问题记录 02】can not run elasticsearch as root + vm.max_map_count [65530] is too low 问题解决
Elasticsearch【问题记录 02】can not run elasticsearch as root + vm.max_map_count [65530] is too low 问题解决
55 0
|
存储 缓存 监控
Elasticsearch Index Monitoring(索引监控)之Index Stats API详解
Elasticsearch Index Monitoring(索引监控)之Index Stats API详解
Elasticsearch Index Monitoring(索引监控)之Index Stats API详解
|
SQL 关系型数据库 MySQL
随笔:MySQL:eq_range_index_dive_limit 索引下探接口
我的测试记录 一、概述 这个参数会影响到执行计划在评估的时候到底使用统计数据还是进行实际的所以你访问,那么很显然如下: 使用统计数据生成执行计划的效率更高。 使用索引实际访问,及索引下探会代价更高但是更加准确。
5064 0
|
索引
LeetCode 599: 两个列表的最小索引总和 Minimum Index Sum of Two Lists
题目: 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。 Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite restaurants represented by strings. 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。
891 0
elasticsearch的Doc Values 和 Fielddata
转自:https://www.cnblogs.com/saihide/p/7827561.html 转自:http://blog.csdn.net/thomas0yang/article/details/64905926 转自:http://www.
753 0

热门文章

最新文章