如何使用C#NEST HighLevel在Elasticsearch中过滤多个字段和值?

时间:2019-06-26 09:28:16

标签: elasticsearch

我一直在阅读文档,并试图找到一种解决方案,以通过多个字段和列过滤结果,但是我不断遇到错误。格式错误的查询。

我想用完全相等的值过滤结果,例如:

allMatch

为了更清楚我打算做什么,如果要使用SQL编写,这就是我希望它运行的方式:

x

如何使用C#NEST HighLevel编写以上SQL?

1 个答案:

答案 0 :(得分:0)

您可以通过以下查询来实现:

{
  "query": {
    "bool": {
      "filter": [
        { "term": {"is_active": true }},
        { "terms": {"category_id": [1, 2, 3, 4] }},
        { "term": {"brand": "adidas" }},
        { "term": {"gender": "male" }}
      ]
    }
  }
}

在NEST中,它看起来像这样:

var searchResults = this.Client.Search<XYZ>(s => s
    .Query(q => q
        .Bool(b => b
            .Filter(
                bs => bs.Term(p => p.IsActive, "true"),
                bs => bs.Terms(p => p.CategoryId, [1, 2, 3, 4]),
                bs => bs.Term(p => p.Brand, "adidas"),
                bs => bs.Term(p => p.Gender, "male")
            )
        )
    )
);