4
我想使用通過嵌套對象進行過濾來構建過濾的Elasticsearch查詢,並進行聚合以獲取嵌套對象列表中嵌套對象的最小值。Elasticsearch在嵌套屬性上使用過濾器和聚合的DSL python查詢
過濾部分工作,但我不能將它與aggs(聚合)部分綁定。 當我在過濾器之後將.aggs.bucket
部件添加到我的代碼中時,它會被忽略(在search.to_dict()
中不可見)或者給我語法錯誤。
任何人都可以給我一個關於如何將它們綁定在一起的例子嗎?我試圖讓這兩個過濾查詢結果結束一個響應
示例模式從nested1.foo.bar
計算的最小值:
class MyExample(DocType):
myexample_id = Integer()
nested1 = Nested(
properties={
'timestamp': Date(),
'foo': Nested(
properties={
'bar': Float(),
}
)
}
)
nested2 = Nested(
multi=False,
properties={
'x': String(),
'y': String(),
}
)
構建查詢:
from elasticsearch_dsl import Search, Q
search = Search().filter(
'nested', path='nested1', inner_hits={},
query=Q(
'range', **{
'nested1.timestamp': {
'gte': exampleDate1,
'lte': exampleDate2
}
}
)
).filter(
'nested', path='nested2', inner_hits={'name': 'x'},
query=Q(
'term', **{
'nested2.x': x
}
)
).filter(
'nested', path='nested2', inner_hits={'name': 'y'},
query=Q(
'term', **{
'nested2.y': y
}
)
)
基本上我需要什麼要做的是獲取每個唯一MyExample文檔的所有嵌套nested1.foo.bar值的最小值(它們具有唯一的myexample_id字段)
是否有可能分別在''''''''nested1'''中爲每組'''foo.bar''獲取最小值?更改:將所有'''foo'''中的所有'''bar'聚合在一個嵌套1中並獲得最小值? – user2091046
我已經編輯了一下'''MyExample'''。 基本上我需要做的是獲得每個唯一'''MyExample'''的所有嵌套'nested1.foo.bar''值的最小值(它們具有唯一'''myexample_id'''字段) – user2091046
在這裏看到我的答案:http://stackoverflow.com/questions/41594609/python-elasticsearch-dsl-aggregation-metric-of-nested-values-per-document/41608959#41608959 –