C#Nest弹性搜索通配符查询 - 没有返回结果

时间:2018-05-25 15:44:53

标签: c# elasticsearch nest

我尝试使用通配符在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),但是当我尝试使用Wildcard时,我会遇到语法错误。根据NEST ES文档,您似乎最后没有使用.Query

目前返回一个空数组。

对于使用Nest和C#的新手,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

我能够通过以下方式解决我的问题:

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

query作为函数参数传入,我希望星号在query之后取出所有内容。