【问题标题】:DSL query to .net Nest QueryDSL 查询到 .net Nest 查询
【发布时间】:2017-09-18 13:15:57
【问题描述】:

我正在尝试将以下 DSL 查询转换为 .net NEST 查询,我使用的是 5.2 版的 elasticsearch。

{
  "size": 10, 
  "from": 0, 
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "finished",
            "fields": [
              "title",
              "content"
            ]
          }
        }
      ],
      "filter": { 
        "bool": {
          "must": [
            {
              "term": {
                "applianceTypeId": "2a682cf7-5fe3-470f-81b2-a74e00ec7c9d"
              }
            },
            {
              "term": {
                "applianceCategoryId": "bde32268-b62f-45cc-8d7d-a74a00d61476"
              }
            }
          ]
        }
      }
    }
  }
}

到目前为止,我得到了以下内容,但我在处理多个术语时遇到了问题。谁能建议我缺少什么?

        var result = client.Search<AdviceSearchDocument>(x => x
                                .From(page -1)
                                .Size(10)
                                .Query(q => q
                                    .Bool(b => b 
                                        .Must(m => m
                                            .MultiMatch(mm => mm
                                                .Query(query)
                                                .Fields(f => f 
                                                    .Fields(f1 => f1.Title, f1 => f1.Content))))
                                            .Filter(f => f
                                                .Bool(b1 => b1
                                                    .Must(m1 => m1 
                                                        .Term(t =>t 
                                                                .Field(fl =>fl.ApplianceTypeId)
                                                                .Value(applicanceTypeId)
                                                                )

                                                            ))))));

【问题讨论】:

标签: elasticsearch nest elasticsearch-dsl


【解决方案1】:

如果问题是如何组合 applianceTypeIdapplianceCategoryId 查询,这里是解决方案

var result = client.Search<AdviceSearchDocument>(x => x
    .From(0)
    .Size(10)
    .Query(q => q
        .Bool(b => b
            .Must(m => m
                .MultiMatch(mm => mm
                    .Query(query)
                    .Fields(f => f
                        .Fields(f1 => f1.Title, f1 => f1.Content)
                    )
                )
            ).Filter(f => f
                .Term(t => t
                    .Field(fl => fl.ApplianceTypeId)
                    .Value(applicanceTypeId)
                ) & f.Term(t => t
                    .Field(fl => fl.ApplianceCategoryId)
                    .Value(applianceCategoryId)
                )
            )
        )
    )
);

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2016-09-25
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多