首页 > 解决方案 > C# Nest Elastic Search 通配符查询 - 未返回任何结果

问题描述

我正在尝试使用通配符在 C# 中设置查询。我可以使用通配符返回正确的数据,MultiMatch但没有成功。这是我到目前为止所拥有的:

public async Task<IEnumerable<SearchResultModel>> Search(string query)
     var queryResults = await elasticApp.SearchAsync<dynamic>(s => s
        .From(0)
        .Take(10)
        .Index(activeIndices)
        .Type(dataTypes)
        .Query(q => q
            .Bool(b => b
                .Should(m => m
                    .Wildcard(w => w
                        .Field("name")
                            .Value(w + "*")                            
                     )
                 )
             )
         )

因此,对于query使用时的函数参数MultiMatch,你会.Query(query)在最后做,但是当我尝试使用通配符将其放入时,我会遇到语法错误。根据 NEST ES 文档,您似乎.Query最后没有使用。

当前返回一个空数组。

由于我是使用 Nest 和 C# 的新手,因此对此的任何见解都将不胜感激。

标签: c#elasticsearchnest

解决方案


我能够通过执行以下操作来解决我的问题:

.Query(q => q                    
  .Bool(b => b                     
    .Should(m => m
      .Wildcard(c => c
        .Field("name").Value(query.ToLower() + "*")
      )
    )
  )
)

query作为函数参数传入,我希望星号在query.


推荐阅读