当前位置:  开发笔记 > 编程语言 > 正文

带有嵌套属性的过滤器和聚合的Elasticsearch DSL python查询

如何解决《带有嵌套属性的过滤器和聚合的ElasticsearchDSLpython查询》经验,为你挑选了0个好方法。

我想通过嵌套对象进行过滤来构建过滤后的Elasticsearch查询,并进行聚合以获取嵌套对象列表中嵌套对象的最小值。

过滤部分有效,但我无法将其与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字段)

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有