当前位置: 首页 > 面试题库 >

带有多个过滤器的ElasticSearch

瞿宏儒
2023-03-14
问题内容

我正在尝试建立一个查询,该查询将找到所有用户文档(docType
=用户),然后根据许多过滤器对其进行过滤。例如位置,性别,年龄等。过滤器是根据我正在构建的搜索功能上的用户输入来添加/删除的。

以下没有结果:

{
    "query": {
        "filtered": {
            "query": {
                "match_all": {}
             },
             "filter": {
                 "and": {
                     "filters": 
                     [
                         {
                             "term": {
                                 "doc.docType": "user"
                             }
                         },
                         {
                             "term": {
                                 "doc.data.profile.location" : "CA"
                             }
                         }
                     ]
                 }
             }
        }
    }
}

以下返回结果:

{
    "query": {
        "filtered": {
            "query": {
                "field": {
                    "doc.data.profile.location" : "CA"
                }
             },
             "filter": {
                 "and": {
                     "filters": 
                     [
                         {
                             "term": {
                                 "doc.docType": "user"
                             }
                         }
                     ]
                 }
             }
        }
    }
}

后者虽然返回结果,但从长远来看是行不通的,因为我可能想为年龄,性别等添加一个额外的过滤器,而且我似乎无法添加多个字段。如果我删除位置过滤器,则第一个查询有效。


问题答案:

布尔过滤器使您可以将多个链在一起MUSTSHOULD并将多个SHOULD_NOT请求合并在一起。允许您将其构造为一个查询。



 类似资料:
  • 问题内容: 我正在建立一个显示api数据的项目,现在我需要对其进行过滤。 我已经完成了类别过滤器,现在我必须做一个价格范围过滤器,以便这两个过滤器可以一起工作,但是我在努力正确地做到这一点。对于价格范围过滤器,我使用2个输入和一个Submit按钮。 我得到了一系列对象,看起来像这样; 我有状态: 如果我的弯管机状态已更改,则设置状态的功能另外,对于开始状态和结束状态,也有类似的功能当我为价格设置状

  • 问题内容: 我想在一个实体上使用多个Hibernate过滤器,我尝试了所有没有失败的逻辑,Google以及Hibernate文档都对此提出了不足。我无法想象这是不可能的。(使用Java 6 Hibernate 4.1.9.final) 目前,我有这个: 我想向Testcase类添加第二个独立过滤器。我所追求的是这样的: 这是我尝试过的 我试图像这样向TestCase添加多个@FilterDefs,

  • 问题内容: Django中具有多个参数的过滤器和链式过滤器之间的区别 问题答案: 正如你在生成的SQL语句中看到的那样,差异不是某些人可能怀疑的“或”。这是WHERE和JOIN放置的方式。 Example1(相同的联接表):来自https://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relatio

  • 问题内容: 我想像这样做一个ElasticSearch查询: 我试图像这样在NEST中实现它: 但这给了我这样的查询,其中的过滤器包装在 布尔值中 : 我应该如何更改我的NEST代码以提供正确的查询?是否必须将我的条款添加到 QueryContainer之外的 其他项目中? 问题答案: 如果要检查条件过滤器,可以在查询之前创建过滤器列表,如下所示: 如果在进行过滤器查询之前不需要检查任何条件,则可

  • 问:在GoogleSheets中,仅使用内置函数,如何编写一个过滤器,根据每行中的一列不在另一个范围的有效值列表中排除记录。 详细资料 我正在使用Google Sheets编写一个财务电子表格,其中我所有的支出和收入都输入到一个名为“交易”的表格中。我有一个单独的表叫做常量,在这里我有一个收入类别列表和一个费用类别列表。 以下是一些用于问题的示例数据: 常数 交易 我有一张名为ByMonth的表格

  • 如果我使用而不是,链接是否会改变结果? 我尝试了几千条记录,结果在几次迭代中都是一致的。但由于这涉及到线程(我找不到足够的相关材料来讨论这种组合),我想双重确保并行流不会以任何方式影响过滤器链接的输出。示例代码: