我当前正在使用Elasticsearch 6.4。 我使用aggs查询结果。详细信息如下。 对于某些查询语句,我没有得到想要的东西,而错过了我想要的文档。弹性搜索似乎以某种上限返回,因此返回一些顶部,而不是整个部分。因此有时我会缺少搜索结果中想要的东西。我目前怀疑这种效果是否与doc_count_error_upper_bound密切相关。我的猜测对吗?然后,如何在聚合过程中减少doc_count_error_upper_bound和sum_other_doc_count以获得我想要的?有什么方法可以调整值?
q = {
"query": {
"bool": {
"must": {"query_string": {"default_field": "eLabel", "query": "Trump"}},
"must_not": [],
"should": []
}
},
"size": 0,
"_source": [
"eid"
],
"aggs": {
"eids": {
"terms": {
"field": "eid"
}
}
}
结果示例
{
"took": 21,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1103,
"max_score": 0,
"hits": [ ]
},
"aggregations": {
"eids": {
"doc_count_error_upper_bound": 15,
"sum_other_doc_count": 840,
"buckets": [
{
"key": "Q8684",
"doc_count": 62
}
,
{
"key": "Q1062177",
"doc_count": 36
}
,
{
"key": "Q100852",
"doc_count": 25
}
,
{
"key": "Q17469",
"doc_count": 25
}
,
{
"key": "Q39913",
"doc_count": 24
}
,
{
"key": "Q20398",
"doc_count": 22
}
,
{
"key": "Q157169",
"doc_count": 20
}
,
{
"key": "Q36929",
"doc_count": 17
}
,
{
"key": "Q17503",
"doc_count": 16
}
,
{
"key": "Q45086",
"doc_count": 16
}
]
}
}
}
答案 0 :(得分:1)
您只需要在聚合查询中添加size
字段即可。默认值为10
,这就是为什么它仅显示10个结果的原因。
此值越高,您看到的sum_other_doc_count
值就越小。根据上面的链接,当有很多唯一的术语时,Elasticsearch只返回最重要的术语。此数字是不属于响应的所有存储桶的文档计数之和
{
q = {
"query":{
"bool":{
"must":{
"query_string":{
"default_field":"eLabel",
"query":"Trump"
}
},
"must_not":[
],
"should":[
]
}
},
"size":0,
"_source":[
"eid"
],
"aggs":{
"eids":{
"terms":{
"field":"eid",
"size":100, <---- Add this
"show_term_doc_count_error": true <---- Add this
}
}
}
}
}
请注意,文档数是根据here估算的。没有一种简单的方法可以知道哪些文档出错了,但是有一种方法可以知道对于哪些存储桶,使用"show_term_doc_count_error": true
会发生该错误。您可以阅读有关此here的信息。
希望这会有所帮助!
答案 1 :(得分:1)
此处查询大小不适用于聚合,您必须在terms
聚合中定义大小。
请找到以下查询以获得更多结果。
您可以在size
中使用aggregation
,但是在此处不能使用offset
来检索数据,这意味着您只能更改限制。
假设您需要10个列表,之后需要下一个10个文档,则可以通过传递20号来获取下一个文档。
{
"query": {
"bool": {
"must": {"query_string": {"default_field": "eLabel", "query": "Trump"}},
"must_not": [],
"should": []
}
},
"size": 0,
"_source": [
"eid"
],
"aggs": {
"eids": {
"terms": {
"field": "eid",
"size": 20
}
}
}
希望这对您有用。