我希望计算一些索引产品数据的值计数聚合,但我似乎在ValueCountAgg
构造函数中得到了一些参数错误。
此类索引数据的示例如下 - :
{
"_index": "test-index",
"_type": "product_product",
"_id": "1",
"_score": 1,
"_source": {
"code": "SomeProductCode1",
"list_price": 10,
"description": null,
"displayed_on_eshop": "true",
"active": "true",
"tree_nodes": [],
"id": 1,
"category": {},
"name": "This is Product",
"price_lists": [
{
"price": 10,
"id": 1
},
{
"price": 10,
"id": 2
}
],
"attributes": {
"color": "blue",
"attrib": "something",
"size": "L"
},
"type": "goods"
}
}
我正在计算聚合如下 - :
for attribute in filterable_attributes:
count = ValueCountAgg(
name='count_'+attribute, field='attributes.'+attribute
)
query.agg.add(count)
其中query
是包含在~pyes.query.Query
对象中的~pyes.query.Search
对象。 filterable_attributes
是属性名称列表,例如颜色和大小。
我也试过设置field=attribute
,但似乎没有任何区别。我在进行搜索时获得的结果集具有以下aggs
属性 - :
{'count_size': {'value': 0}, 'count_color': {'value': 0}}
其中size
和color
在attributes
字典内编入索引,如上所示。这些显然是错误的结果,我认为这是因为我没有正确设置field
。
我哪里错了?
答案 0 :(得分:1)
我发现了我错的地方。
根据Scoping Aggregations,默认情况下,聚合的范围与其查询相关联。我的查询返回零结果,我不得不修改相同的搜索短语。
之后我得到了所需的结果,并且汇总结果正确。
{'count_size': {'value': 3}, 'count_color': {'value': 3}}