【问题标题】:How do I filter multiple fileds and values in elasticsearch using C# NEST HighLevel?如何使用 C# NEST High Level 过滤 elasticsearch 中的多个字段和值?
【发布时间】:2019-06-26 17:29:58
【问题描述】:

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

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

is_active: true
category_id: [1,2,3,4]
brand: "addidas"
gender: "male"`enter code here`

为了更清楚地说明我打算做什么,如果它是用 SQL 编写的,我希望它是这样运行的:

SELECT .... WHERE 
is_active= 1 AND category_id IN(1,2,3,4) 
AND brand='addidas' AND gender='male'

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

    {
      "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")
                )
            )
        )
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-14
      • 2019-04-24
      • 2021-11-05
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多