【问题标题】:Nest - ElasticSearch.Net - How do I split the FacetFilter hit count returned by a search propertyNest - ElasticSearch.Net - 如何拆分搜索属性返回的 FacetFilter 命中计数
【发布时间】:2015-03-09 22:49:52
【问题描述】:

我有一个 NEST 查询;

            var desciptor  = new SearchDescriptor<SomePoco>()
             .TrackScores()
             .From(request.Page == 1 ? 0 : (request.Page - 1) * request.PageSize)
             .Size(request.PageSize)
             .MatchAll()
             .FacetFilter("some_name", a => new FilterContainer(new AndFilter { Filters = CreatePocoSearchFilter(request) }))
             .SortDescending("_score");


var results = _client.Search<SomePoco>(x => descriptor);

FacetFilter 正在从我的查询中返回 HITS 的总数。我想使用搜索请求上的属性来拆分这些命中。因此,在搜索请求中,我有一个整数列表。我想知道该列表中的每个 int 返回了多少次命中。

我希望这是有道理的。

我已经尝试添加一个 FacetTerm,这会为我提供 int 查询值的每个值的总命中数,而不仅仅是与搜索相关的命中数。我了解查询、过滤阶段,并尝试相应地更改描述符,但没有成功。

谢谢。

【问题讨论】:

  • 您正在执行 MatchAll(),那么您正在搜索的整数列表是什么或在哪里?还是您的意思是您正在检索一个整数列表,并且还想获取每个整数的出现次数?
  • 整数列表是传递给 CreatePocoSearchFilter 的请求。我想获取由于列表中包含每个 int 而导致的命中数。

标签: c# elasticsearch nest


【解决方案1】:

有几种方法可以做到这一点。我的建议是使用过滤查询,然后在结果上使用术语聚合或方面(不推荐使用方面,因此我建议远离这些)。

使用聚合:

POST /_search
{
  "query": {
    "filtered": {
      "query": { "match_all": {}},
      "filter": {
        "terms": {
          "<FIELD_NAME>": [1, 2, 3, 42]
        }
      }
    }
  },
  "aggs": {
    "countOfInts": {
      "terms": {
        "field": "<FIELD_NAME>",
        "size": 10
      }
    }
  }
}

有一个方面:

POST /_search
{
  "query": {
    "filtered": {
      "query": { "match_all": {}},
      "filter": {
        "terms": {
          "<FIELD_NAME>": [1, 2, 3, 42]
        }
      }
    }
  },
  "facets": {
    "countOfInts": {
      "terms": {
        "field": "<FIELD_NAME>",
        "size": 10
      }
    }
  }
}

您也可以通过使用match_all 执行普通查询来执行相同的操作,然后在构面或聚合中执行过滤器。我在上面列出的方式会表现得更好一些,因为它会在构建 agg/facet 之前减少工作集。

我没有包含 NEST 的代码,因为根据您使用的 dll 版本,格式可能会有所不同。

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2015-08-01
    • 1970-01-01
    • 2016-10-26
    • 2014-07-19
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    相关资源
    最近更新 更多