ElasticSearch 聚合:每个聚合排除一个过滤器

2024-01-22

我想过滤掉字段“A”等于“a”的文档,并且我想同时对字段“A”进行分面,当然不包括之前的过滤器。 我知道您可以将过滤器放在查询“外部”,以便在不应用该过滤器的情况下获取方面,例如:

弹性搜索

{
   "query : { "match_all" : { } },  
   "filter" : { "term : { "A" : "a" } },
   "facets" : { 
      "A" : { "terms" : { "field" : "A" } }  //this should exclude the filter A:a
   }
}

SOLR

&q=:*:*
&fq={!tag=Aa}A:a
&facet=true&facet.field={!ex=Aa}A

这非常好,但是如果我有多个过滤器和方面,并且每个过滤器和方面都应相互排除,会发生什么情况? 例子:

filter=A:a
filter=B:b
filter=C:c

facet={exclude filter A:a}A
facet={exclude filter B:b}B
facet={exclude filter C:c}C

也就是说,对于构面 A,我想保留除 A:a 之外的所有过滤器,对于构面 B,我想保留除 B:b 之外的所有过滤器,依此类推。 最明显的方法是进行 n 个查询(每个 n 个方面一个查询),但我不想这样做。


全局范围提供对每个文档的访问,然后您可以添加用于主查询的相同过滤器。

我举了一个全局范围的例子这个相关主题 https://stackoverflow.com/questions/26269604/elasticsearch-how-to-exclude-filter-from-aggregations

您能否就 post_filter 的性能问题提供任何反馈?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch 聚合:每个聚合排除一个过滤器 的相关文章

随机推荐

  • 为什么 PySide/PyQt 中使用了如此多的 super?

    简短版本 tl dr 我正在学习PySide 大多数在线教程都使用super初始化 UI 元素 这很重要 即更具可扩展性 还是一个品味问题 澄清 正如我在详细版本中更清楚地说明的那样 这不是另一个询问何时使用的通用线程super 这之前已经
  • Perl:替换二进制内容

    我需要用 Perl 中的一些其他内容 文本或二进制 替换二进制内容 如果内容是文本 我可以使用 s 来替换内容 my txt tomturbo txt s t T g TomTurbo 但如果内容是二进制的 那就不起作用了 有没有简单的方法
  • 如何在 Windows Azure VM 上启用声音

    我想使用 Windows Azure 虚拟机作为开发机器 我想在该机器上启用声音 以便听到事件声音 错误 警告等 并收听来自 last fm 的音乐 Azure 虚拟机可以有声音吗 我试过 http www wikihow com Hear
  • 从片段调用 setHasOptionsMenu(true) 会导致多次调用 Activity 中的 onCreateOptionsMenu

    我有一个简单的Activity其中包含一个ViewPager 我正在尝试将一些菜单项添加到我的菜单中Fragments 但是我遇到了一些奇怪的行为 呼叫 setHasOptionsMenu true 从我的片段结果到封闭的活动onCreat
  • 通过外部网站上传图片到gravatar个人资料

    我想知道是否可以创建一个上传功能 通过我自己的网站将图片上传到头像网站 是的 这是可能的 看http en gravatar com site implement xmlrpc http en gravatar com site imple
  • 更好的设计,可以将数据传递到其他 ng-view 并将其保留在控制器之间

    我开始使用 AngularJS 进行开发 我很困惑这是否是在我的部分视图之间传递数据的正确设计 现在我有一个加载程序页面 我可以在其中执行一些请求 function PeopleController scope http location
  • Javascript (D3) - 日期比较返回 NaN

    我正在使用 d3 并尝试比较数组中的日期 我想得到它的最小值和最大值 以下是我的数据集 var data date 2016 07 19 close 185697 89 date 2016 07 20 close 185697 89 dat
  • 检查窗口是否在后台 Tkinter

    所以 我正在尝试制作一个应用程序tkinter 我刚刚开始学习这个模块的工作原理 在我的应用程序中 我有一个根窗口和一个子 顶级 窗口 并且我将子窗口设置为始终位于顶部 当我最小化根窗口时 子窗口也会最小化 因为我已经定义了该条件 我的问题
  • Spring Boot:从 HTTP 重定向到 HTTPS 会导致 PUT 方法出现 405 错误

    我有一个与此非常相似的问题 重定向 Post 方法 HTTP gt HTTPS HTTP 状态 405 Spring boot https stackoverflow com questions 42108498 redirect post
  • 在 Go 中设置 SQL 连接的 TCP 超时

    当我使用 VPN 连接到数据库 使用标准 go sql 库 并且 VPN 接口关闭时 当我尝试执行 SQL 查询时 无论接口是否同时打开 都会出现 75 秒超时 我想将此超时减少到某个合理的时间 这样在这种情况下我的应用程序就不会被冻结 7
  • MPI 中对 cout 的“原子”调用

    我感兴趣的是 OpenMPI 中是否有命令或技术可以进行原子调用来写入 stdout 或者就此而言 任何流 我注意到 在 MPI 程序执行期间 写入 cout 或其他流 的调用可能会变得混乱 因为每个过程可能会在到达代码的某个部分时进行写入
  • 同步 XML 架构验证? .NET 3.5

    我知道我可以使用如下回调方法根据模式验证 xml 但是有没有一种方法可以同步执行而不是事件驱动 我想到的一种方法是设置一个类成员布尔标志 IsValidated false 然后调用 xml Validate ValidationEvent
  • Firebase 用户 UID 与身份验证 UID 不匹配

    我是 Firebase 的新手 我正在使用react redux firebase 但不确定这是否与这个问题相关 我在使用这些标准身份验证规则时遇到问题 rules users uid read uid auth uid write uid
  • 导入游戏.request

    我在用着Android Studio并尝试将 Google Play 游戏服务导入我的应用程序 已导入库中的 BaseGameUtils 文件夹 现在 GameHelper 类中的以下行出现错误 import com google andr
  • HornetQ 核心 API 和 JMS

    我有几个关于 HornetQ 的问题 HornetQ 核心 API 和 JMS API 之间有什么区别 使用其中之一有什么优点或缺点吗 如果我使用核心 API 然后我决定这样做 这是真的吗 更改我的消息传递总线 比如说 ActiveMQ 然
  • 使用字典中的键反转多个值

    我对 Python 和整体编程还很陌生 所以请耐心等待 我有一本字典 Male Female Eunuch 作为值和这些作为键的不同名称 Persons Hodor Male Tyrion Male Theon Male Arya Fema
  • 更改实时 MySQL 数据库上的字符集

    我目前在 MySQL 5 1 x 数据库中有一堆使用 latin1 字符集的表 问题是 我们最近有一群用户尝试使用 UTF 8 编码输入文本 这似乎破坏了一切 盲目更新表的字符集是否安全 对于这种情况 有哪些最佳实践 除了显然备份所有内容之
  • 使用 local.xml 从顶部菜单中删除链接

    有谁知道如何使用 local xml 从顶部菜单中删除链接 默认的 checkout xml 中有
  • 为什么Rails Active Record迁移在mysql的varchar列上生成COLLATE utf8_bin

    我在 Rails 版本 3 0 10 上运行 jruby 我发现活动记录迁移以某种方式在所有 varchar 列上生成 COLLATE utf8 bin 当我表演创建表用户时 CREATE TABLE users id int 11 not
  • ElasticSearch 聚合:每个聚合排除一个过滤器

    我想过滤掉字段 A 等于 a 的文档 并且我想同时对字段 A 进行分面 当然不包括之前的过滤器 我知道您可以将过滤器放在查询 外部 以便在不应用该过滤器的情况下获取方面 例如 弹性搜索 query match all filter term