尝试使用 Nest 6.0 在弹性搜索中使用 NEST 在 C# 中的 lambda 表达式中创建查询时遇到一些问题



到目前为止,我有 json 格式的弹性查询,现在我正在尝试在 lambda 表达式中转换带有 Nest 扩展名的 Asp.Net c# 查询。面对这个问题,任何机构都可以在 json 查询的帮助下帮助创建 Lambda 表达式。

我已经尝试过,但它是查询中的列表类型,所以当我尝试给出错误时可能是我的 lambda 表达式不正确。

我已经尝试过使用这个 lambda 表达式,但是当我调试时,查询不会像下面的 json 那样创建,所以需要您的帮助。

 var response = _esclient.EsClient().Search<MyClassname>(a => a
                            .Index
                            .Type
                            .Size
                            .From
                            .Query(q => q.Bool(b => b.Must(m => m.Terms(p => p.Field(ab => ab.model).Terms(searchAjaxRequest.modeltype)),
                                                               m => m.Terms(p => p.Field(ab => ab.variant).Terms(searchAjaxRequest.varientType)),    
                                                           )    )))

只需要在 c# 或任何工具市场中的 NEST ext. 中使用 Lambda 表达式,我可以使用它来在 json 的帮助下创建 lambda 表达式。这里还有一件重要的事情,布尔值和必须内部应该动态增加或减少.我不知道我将如何处理这种情况与 Nest.理想情况下,循环将在应该内部使用,但我不确定我将如何做到这一点。

    {  
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
             {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "variant": "lxi"
                      }
                    },
                    {
                      "term": {
                        "model": "ritz"
                      }
                    }
                  ]
                }
              },              
             {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "variant": "lxi"
                      }
                    },
                    {
                      "term": {
                        "model": "alto"
                      }
                    }
                  ]
                }
              },
             {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "variant": "lxi"
                      }
                    },
                    {
                      "term": {
                        "model": "omni"
                      }
                    }
                  ]
                }
              },
              {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "variant": "vxi"
                      }
                    },
                    {
                      "term": {
                        "model": "alto 800"
                      }
                    }
                  ]
                }
              }
            ]
          }
        }       
      ]
    }
  }
}

很有趣:)你应该优化它

var client = new InMemoryEsClientFactory(settings).Create();
var searchResponse = client.Search<MyClassname>(s => s.Index("index_name")
    .Query(q => q.Bool(b => b.Must(m => m.Bool(b1 =>
        b1.Should(
            should => should.Bool(sb =>
                sb.Must(m3 => m3.Terms(t => t.Field(classname => classname.Model).Terms("eeco")))),
            should => should.Bool(sb =>
                sb.Must(m1 => m1.Term(c => c.Field(classname => classname.Variant).Value("vxi")),
                    m1 => m1.Term(c => c.Field(classname => classname.Model).Value("a star"))))))))));
Request:
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "bool": {
                  "must": [
                    {
                      "terms": {
                        "model": [
                          "eeco"
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "variant": {
                          "value": "vxi"
                        }
                      }
                    },
                    {
                      "term": {
                        "model": {
                          "value": "a star"
                        }
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
}

最新更新