使用动态字段名称搜索ElasticSearch

问题描述 投票:0回答:1

我有如下方法在C#中进行搜索:

公共无效搜索(字符串数据)

    {
        var searchResponse = client.Search<Products>(s => s
            .From(0)
           .Size(100)
           .Query(q => q
             .Match(m => m
                 .Field( f => f.ProductName)
                  .Query(data))));
         int cnt = searchResponse.Documents.Count;
    }

此返回有效的5个文档。

但是,我想按如下方式修改上述方法,以便可以传递要动态搜索的字段。

公共无效搜索(字符串数据,字符串fieldName)

{
        var searchResponse = client.Search<Products>(s => s
            .From(0)
           .Size(100)
           .Query(q => q
             .Match(m => m
                 .Field(fieldName)
                  .Query(data))));

        int cnt = searchResponse.Documents.Count;

    }

上面的代码确实返回任何错误,但返回0个文档。

这里我将“ ProductName”传递给“ fieldName”参数。我知道这行不通。我只想在这里告诉我的意图。

elasticsearch search dynamic field
1个回答
0
投票

Field Infering

您可以在下面传递给您的查询

var fieldString = new Field(“ fieldName”);

var fieldString = new Field("fieldName");
var searchResponse = _elasticClient.Search<AllOpportunitySearchResult>(s => s
                                   .From(0)
                                   .Size(100)
                                   .Query(q => q
                                                .Match(m => m
                                                             .Field(fieldString)
                                                             .Query(data)
                                                      )
                                         )
                      );
© www.soinside.com 2019 - 2024. All rights reserved.