我正在使用Elasticsearch作为数据库。
我将使用聚合。
POST new_logs/_search { "query": { "bool": { "must": [ { "term": { "base.logClass.keyword": "Access" } } ] } }, "size": 0, "aggs": { "Rule1": { "terms": { "field": "source.srcIp" }, "aggs": { "MinTime": { "min": { "field": "base.receiveTime" } }, "MaxTime": { "max": { "field": "base.receiveTime" } } } }, "Rule2": { "filter": { "range": { "base.receiveTime": { "gte": "2022-06-22 11:27:00", "lte": "2022-06-22 11:29:00" } } }, "aggs": { "SubFilter": { "filter": { "term": { "base.subLogClass.keyword": "Login" } }, "aggs": { "SourceIP": { "terms": { "field": "source.srcIp" }, "aggs": { "DestinationIP": { "terms": { "field": "destination.dstIp" } } } }, "MinTime": { "min": { "field": "base.receiveTime" } }, "MaxTime": { "max": { "field": "base.receiveTime" } } } } } }, "Logic1": { "max_bucket": { "buckets_path": "Rule1>MinTime" } }, "Logic2": { "min_bucket": { "buckets_path": "Rule2>SubFilter>MinTime" } } } }
正如您在查询中看到的,有两个agg-rule 1和Rule2。
Rule2正在使用过滤器aggs,而Rule1没有使用。
当我要使用流水线时,逻辑1是好的,但逻辑2失败了。
这是错误消息。
{ "error" : { "root_cause" : [ { "type" : "action_request_validation_exception", "reason" : "Validation Failed: 1: The first aggregation in buckets_path must be a multi-bucket aggregation for aggregation [Logic2] found :org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder for buckets path: Rule2>SubFilter>MinTime;" } ], "type" : "action_request_validation_exception", "reason" : "Validation Failed: 1: The first aggregation in buckets_path must be a multi-bucket aggregation for aggregation [Logic2] found :org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder for buckets path: Rule2>SubFilter>MinTime;" }, "status" : 400 }
我不确定出了什么问题。
如果有过滤器,是否无法使用管道累积?
我向那些对Elasticsearch有丰富经验的人寻求帮助。
谢谢你的帮助。
滤波器聚合是单桶聚合。min_bucket抱怨它需要在输入路径的第一层进行多桶聚合。
您可能能够使用筛选器聚合(即多存储桶筛选器)或将筛选器聚合嵌套在 Rule1 下,因为您已经在执行这些聚合,并且可以筛选 Rule1 中的子集。
目前 我在DynamoDB中有一个表,其中有一个属性-主键-包含唯一的值。 问题 我希望对#B#C#(1)精确匹配和(2)包含匹配进行2次搜索,因此只需要结果: 是否可以针对主键进行这2次搜索 如果是这样,运行哪种查询最有效?e、 g.查询或扫描 注: 对于(2),我使用以下代码,但它返回DB中的所有项:
我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?
GraphQL是否有可能让客户端告诉服务器,只有当某个字段不是时,它才需要该字段? 考虑到这个问题 然后,反应应该是这样的 而不是 这是否可能在不违反GraphQL规范的情况下实现?
我正在尝试输出一个显示求职者对特定工作的申请的视图。到目前为止,我只能查看所有接收到的应用程序的转储,但我无法实现查询来仅查看特定作业的应用程序。即我希望能够查看每个不同空缺职务的条目。谢谢 \\ \\
问题内容: 我正在编写一个PL / SQL过程,该过程需要动态生成一些查询,其中之一涉及使用来自查询的结果作为参数来创建临时表。 它可以正确编译,但是即使使用非常简单的查询,例如: IT抛出。如果我手动运行创建的查询,它将正确运行。在这一点上,我能够确定是什么导致了问题。 问题答案: 尝试丢掉“;” 从您立即执行的字符串内部。
我试图在嵌套筛选器聚合中使用嵌套查询筛选器。当我这样做时,聚合返回时没有任何项。如果我将查询更改为简单的旧match_all筛选器,我确实会在bucket中获得项。 下面是我正在使用的映射的简化版本: 该查询在聚合上使用match_all筛选器: