【问题标题】:Return no result for NEST C# but Query DSL return resultNEST C# 不返回结果,但查询 DSL 返回结果
【发布时间】:2021-03-30 03:48:30
【问题描述】:

我有这个查询 DSL,当我直接在 ElasticSearch 查询时,它会返回正确的结果

GET /person/_search
{
  "query": {
    "match": {
          "nameDetails.nameValue.firstName": {
            "query": "Fawsu"
          }
        }
    }
  }
}

但在 NEST C# 中,它不会返回任何结果。我可以知道我的语法有什么问题吗?

        var response = _elasticClient.Search<Person> (s => s
            .Index("person")
            .Query(q => q
                .Match(m => m
                    .Field(f => f.NameDetails.Name.First().NameValue.FirstName)
                    .Query("Fawsu")
                )
            )
        );

        var response = _elasticClient.Search<Person> (s => s
            .Index("person")
            .Query(q => q
                .Match(m => m
                    .Field(f => f.NameDetails.Name[0].NameValue.FirstName)
                    .Query("Fawsu")
                )
            )
        );

如何查看 NEST 生成的查询以解决此问题?

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    与预期的字符串相比,.Field(f =&gt; f.NameDetails.Name[0].NameValue.FirstName) 中的表达式看起来比对象图多了一层Name。我希望表达式的输出是

    nameDetails.name.nameValue.firstName
    

    不会匹配查询中的字段"nameDetails.nameValue.firstName"

    You can see what NEST sends to Elasticsearch in a number of ways

    【讨论】:

    • 我使用同一个类进行索引和搜索。不知道为什么在索引期间缺少Name
    • 问题已解决。实际上,我使用另一个类进行索引和另一个类进行搜索。谢谢拉斯。
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 2015-11-19
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2019-09-18
    相关资源
    最近更新 更多