我是 flex 搜索的新手,并且是第一次使用它为数据建立索引并对其进行搜索。
我写了这段代码来查找索引中的术语数:
{
{
"size": 0
},
"aggs": {
"BookID": {
"terms": {
"field": "bookID",
"size": 100000
},
"aggs": {
"total_Chapter": {
"nested": {
"path": "chapterData"
},
"aggs": {
"termsInChapter": {
"filters": {
"filters": {
"king": {
"query_string": {
"query": "king",
"default_field": "chapter.data"
}
},
"queen": {
"query_string": {
"query": "queen",
"default_field": "chapter.data"
}
},
"apple": {
"query_string": {
"query": "apple",
"default_field": "chapter.data"
}
}
}
}
},
"termsInChapter_count": {
"value_count": {
"field": "termsInChapter"
}
}
}
}
}
}
}
}
但是不知何故结果返回0。我不知道我在此查询中做错了什么。
这是此查询输出的一部分:
"aggregations": {
"BookID": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 1,
"doc_count": 1,
"total_Chapter": {
"doc_count": 23,
"termsInChapter": {
"buckets": {
"apple": {
"doc_count": 2
},
"king": {
"doc_count": 1
},
"queen": {
"doc_count": 1
}
}
},
"termsInChapter_count": {
"value": 0 <=========This should return 3
}
}
},
{
"key": 2,
"doc_count": 1,
"total_Chapter": {
"doc_count": 23,
"termsInChapter": {
"buckets": {
"apple": {
"doc_count": 0
},
"king": {
"doc_count": 3
},
"queen": {
"doc_count": 2
}
}
},
"termsInChapter_count": {
"value": 0
}
}
},
在此先感谢您的帮助。
最佳答案
您的termsInChapter_count
聚合需要引用一个字段,而不是聚合名称,这就是您的解决方案不起作用的原因。
为此,您需要一种sum_bucket
类型的聚合:
"termsInChapter_count": {
"sum_bucket": {
"buckets_path": "termsInChapter._count"
}
}
之后编辑
"aggs": {
"termsInChapter": {
"filters": {
"filters": {
"king": {
"query_string": {
"query": "king",
"default_field": "chapter.data"
}
},
"queen": {
"query_string": {
"query": "queen",
"default_field": "chapter.data"
}
},
"apple": {
"query_string": {
"query": "apple",
"default_field": "chapter.data"
}
}
}
},
"aggs": {
"filter_zero_matches_buckets": {
"bucket_selector": {
"buckets_path": {
"hits": "_count"
},
"script": "params.hits > 0"
}
}
}
},
"termsInChapter_count": {
"bucket_script": {
"buckets_path": {
"bucket_count": "termsInChapter._bucket_count"
},
"script": "params.bucket_count"
}
}
}
您在结果中寻找的是
termsInChapter_count
值。
关于elasticsearch - 下面的 Elasticsearch 查询中的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44019984/