当前位置: 首页 > 知识库问答 >
问题:

如何在NEST 2.3.0中使用带有must子句和filter子句的bool查询

梅耘豪
2023-03-14

文档说过滤后的查询是

在2.0.0-beta1中不推荐使用。使用bool查询,查询使用must子句,筛选器使用filter子句。

来源

这是对filter子句的正确使用吗?

var result = client.Search<Post>(x => x
.Query(q => q
    .Bool(b => b
        .Must(m => m
            .MultiMatch(mp => mp
                .Query(query)
                .Fields(f => f
                    .Fields(f1 => f1.Title, f2 => f2.Body, f3 => f3.Tags))))
        .Filter(f => f
            .Bool(b1 => b1
                .Must(filters)))))); // or filter?

查询是字符串,筛选器是func ,querycontainer>[]

"query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "javascript",
            "fields": [ "title", "body", "tags" ]
          }
        }
      ],
      "filter": [
        {
          "bool": {
            "must": [
              { "term": { "tags": { "value": "javascript" } } },
              { "term": { "tags": { "value": "ajax" } } },
              { "term": { "tags": { "value": "jquery" } } }
            ]
          }
        }
      ]
    }

共有1个答案

唐永春
2023-03-14

原来使用Filteredquery query的地方,现在使用BoolqueryMUST子句,同样,原来使用Filtered查询过滤器的地方,现在使用Boolqueryfilter子句。

在您的示例中,必须满足多个筛选子句,因此在传递给外部boolfilter子句的bool查询中包装为must子句的一组must子句是正确的。

在ElasticSearch2.0中,查询和筛选器合并为一个,有一个查询上下文和一个筛选器上下文的概念;当包装在boolqueryfilter子句中时,查询/筛选器位于筛选器上下文中,因此不会计算相关性分数,而是可以缓存的。

NEST 2.x与Elasticsearch 2.0中的变化保持一致,并具有可用于查询和筛选上下文的查询(QueryContainerQueryContainerDescriptor 等)。

 类似资料:
  • 这是一个关于2个查询的故事。一个返回结果,而另一个不返回结果。为什么? 返回结果的查询:

  • 问题内容: 我为嵌套对象具有以下索引架构: 数据如下: 现在,如果我做一些简单的查询,例如找到“ isCurrentWorkplace”为true且title.id为259的工作场所,则它可以正常工作: 现在的问题是,我需要组合这些必须子句。例如,我需要找到一条记录,其“ isCurrentWorkplace”为true,“ title.id”为259 AND “ isCurrentWorkpla

  • 我正在尝试在pyspark中运行子查询。我发现可以使用SQL语句。但是,使用“where”或“filter”操作是否有任何内在的支持? 考虑测试数据框架: 在这里,您可以看到where函数工作正常。当我尝试使用子查询执行相同操作时,如下所示: 我得到这个错误: 属性错误回溯(最近一次调用)在---- /opt/cloudera/parcels/CDH-6.3.4-1。cdh6.3.4。p4744.

  • 问题内容: 在MySQL 5.0中,为什么尝试在FROM子句中创建带有子查询的视图时会发生以下错误? 错误1349(HY000):视图的SELECT在FROM子句中包含一个子查询 如果这是MySQL引擎的限制,那么为什么他们还没有实现此功能呢? 此外,对于此限制有什么好的解决方法? 是否有任何变通方法可用于FROM子句中的任何子查询,或者是否存在某些无法在FROM子句中使用子查询无法表达的查询?

  • 问题内容: 我有这样的查询- 由于将rowz = 1放入查询中,因此该查询无法正常工作?如果我只想要在嵌套后rowz = 1的结果该怎么办。 当我这样做时- 从news_article中选择unnest(string_to_array(na.news_category_id,’,’)):: int rowz; 我的桌子是- 然后它给了我这个结果- 问题答案: 这回答了您的问题: 诀窍是将数组放入一

  • 问题内容: 谁能给我一些关于如何将这种子查询放入提示?(我正在使用 JPA 2.0 - Hibernate 4.x ) -第二个选择将始终获得单个结果或null。 问题答案: 尝试类似以下示例的操作来创建子查询: 请注意,由于附近缺少IDE,因此该代码尚未经过测试。