如果想要计算索引(Elasticsearch)中的文档数量,那么(至少?)有两种可能性:
直接 count
POST my_index/_count
应该返回文件的数量my_index.
运用 search
在这里,人们可以使用count的search_type或一些其他类型.在任何一种情况下,总计数都可以从字段中提取['hits']['total']
我的问题是:
不同方法之间有什么区别?我应该选择哪一个?
我提出这个问题是因为根据所选择的方法我会遇到不同的结果.我现在正在调试问题,这个问题突然出现了.
Jil*_*urp 38
可能_count有点快,因为它不必执行具有排名和结果获取的完整查询,并且可以简单地返回大小.
知道如何设法获得不同的结果会更有趣.为此,我需要更多信息,例如您要发送的确切查询以及索引上是否正在进行索引.
但是假设您执行以下操作
_search和_count(匹配所有查询)应返回相同的总数.如果没有,那就太奇怪了.
the*_*man 21
如果_search必须使用,而不是_count和你在Elasticsearch 7.0+,设置size: 0和track_total_hits: true将提供相同的信息作为_count
GET my-index/_search
{
"query": { "term": { "field": { "value": "xyz" } } },
"size": 0,
"track_total_hits": true
}
{
"took" : 612,
"timed_out" : false,
"_shards" : {
"total" : 629,
"successful" : 629,
"skipped" : 524,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 29349466,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
}
Run Code Online (Sandbox Code Playgroud)
Arc*_*ano 16
curl http://localhost:9200/_cat/indices?v 以表格格式为您提供计数和其他信息
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open logstash-2019.10.09-000001 IS7HBUgRRzO7Rn1puBFUIQ 1 1 0 0 283b 283b
green open .kibana_task_manager_1 e4zZcF9wSQGFHB_lzTszrg 1 0 2 0 12.5kb 12.5kb
yellow open metricbeat-7.4.0-2019.10.09-000001 h_CWzZHcRsakxgyC36-HTg 1 1 6118 0 2.2mb 2.2mb
green open .apm-agent-configuration J6wkUr2CQAC5kF8-eX30jw 1 0 0 0 283b 283b
green open .kibana_2 W2ZETPygS8a83-Xcd6t44Q 1 0 1836 23 1.1mb 1.1mb
green open .kibana_1 IrBlKqO0Swa6_HnVRYEwkQ 1 0 8 0 208.8kb 208.8kb
yellow open filebeat-7.4.0-2019.10.09-000001 xSd2JdwVR1C9Ahz2SQV9NA 1 1 0 0 283b 283b
green open .tasks 0ZzzrOq0RguMhyIbYH_JKw 1 0 1 0 6.3kb 6.3kb
Run Code Online (Sandbox Code Playgroud)
Ade*_*qui 12
老问题,因为在 ElasticSearch 版本 > 7.0 上插话:
_search: 返回具有搜索查询命中计数的文档,小于或等于结果窗口大小,通常为 10,000。例如:
{"took":3,"timed_out":false,"_shards":{"total":1,"successful":1,"skiped":0,"failed":0},"hits":{"total ":{"value":10000,"relation":"gte"},"max_score": 0.34027478,"hits":[...]}}
_count:无论结果窗口大小如何,都返回搜索查询的总命中数。没有返回文件,例如:
{"count":5703899,"_shards":{"total":1,"successful":1,"skip":0,"failed":0}}
因此,_search如果这是您配置的结果窗口大小,则可能会将总命中数返回为 10,000,而_count将返回同一查询的实际计数。
| 归档时间: |
|
| 查看次数: |
63244 次 |
| 最近记录: |