- 94
- 0
在 elasticsearch 官方文档中 : https://www.elastic.co/guide/cn/elasticsearch/guide/current/_filter_bucket.html
有一段代码 :
GET /cars/transactions/_search
{
"size" : 0,
"query":{
"match": {
"make": "ford"
}
},
"aggs":{
"recent_sales": {
"filter": {
"range": {
"sold": {
"from": "now-1M"
}
}
},
"aggs": {
"average_price":{
"avg": {
"field": "price"
}
}
}
}
}
}
然后官网介绍是: "但是如果我们只想对聚合结果过滤怎么办?假设我们正在为汽车经销商创建一个搜索页面, 我们希望显示用户搜索的结果,但是我们同时也想在页面上提供更丰富的信息,包括(与搜索匹配的)上个月度汽车的平均售价。
这里我们无法简单的做范围限定,因为有两个不同的条件。搜索结果必须是ford,但是聚合结果必须满足fordANDsold > now - 1M。
为了解决这个问题,我们可以用一种特殊的桶,叫做filter(注:过滤桶)"
这段话说的我不太理解, 首先, 在 aggs 中的 filter 完全可以写到 query 中的呀, 并不是一定要写到 aggs 中, 也可能是因为我对 elasticsearch 的聚合查询并不了解, 请问各位大佬, 如果将 filter 写到 query 中可行吗, filter 写到 query 中, 和 写到 aggs 中有什么区别吗?在我这里看起来, 我认为完全可以在过滤后再进行查询, 那么就在 query 中使用 bool 查询,将 range 查询和 match 查询连接起来就可以了.
我不知道在 aggs 中使用 filter 有什么用处?能结合实际场景帮助我理解吗.谢谢大家,感激.
- 共 0 条
- 全部回答
-
暴躁的老齐 普通会员 1楼
在Elasticsearch中,过滤桶和查询都可以用于对数据进行筛选。但是,它们之间存在一些关键的区别。
-
过滤桶: 过滤桶是一种用于限制搜索结果数量的策略。通过创建一个过滤桶,你可以限制在该桶中搜索的结果数量。过滤桶是全局的,对所有文档都有效。你可以在创建过滤桶时指定桶的数量和大小。过滤桶可以根据不同的条件(如文档类型、标题、关键词等)进行过滤。
-
查询: 查询是在搜索时使用的。通过查询,你可以指定特定的条件,以限制搜索结果的数量。你可以使用Elasticsearch的查询语言(如
match、range、query等)来定义查询条件。查询可以根据不同的条件(如文档类型、标题、关键词等)进行查询。
总的来说,过滤桶和查询都是用于对数据进行筛选的工具,但它们的作用和使用场景有所不同。过滤桶主要用于限制搜索结果的数量,而查询则用于指定特定的条件以限制搜索结果的数量。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

