我创建了一个名为" electronics"的索引。我在索引中创建了两个_type,即" mobiles"," laptops"它们有共同的字段名称"屏幕大小"。
由于我需要显示字段中存在的所有术语的构面,因此我使用聚合来生成术语及其方面。
{
"aggs": {
"distinct_field": {
"terms": {
"field": "screensize",
'min_doc_count': 0,
'size': 0
}
}
}
}
在回复中,我使用_type手机和笔记本电脑获得所有屏幕尺寸(因为lucene将来自不同类型的相同字段名称视为单个字段。)。即使他们的数量为0,我也只需要手机中的条款。
我想在进行聚合之前对mobiles _type进行过滤查询,但结果仍然相同。
{
"query": {
"filtered": {
"filter": {
"type": {
"value": "mobiles"
}
}
}
},
"aggs": {
"distinct_field": {
"terms": {
"field": "screensize",
'min_doc_count': 0,
'size': 0
}
}
}
}
有什么方法可以只为特定字段的单个_type获取条款?
答案 0 :(得分:0)
我建议使用terms
聚合与script
代替field
这样的另一种方法。如果文档的type
为mobiles
而null
,则脚本仅返回屏幕大小的值。这应该有用,试一试:
{
"aggs": {
"distinct_field": {
"terms": {
"script": "doc._type.value == 'mobiles' ? doc.screensize.value : null",
"min_doc_count": 0,
"size": 0
}
}
}
}
为此,您还需要确保scripting is enabled