使用动态字段名称搜索 ElasticSearch
Searching ElasticSearch with dynamic field names
我有一个在C#中搜索的方法如下:
public void Search(string data)
{
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;
}
此returned 5个文件,有效。
但是,我想修改上面的方法如下,这样我就可以动态传递要搜索的字段了。
public void Search(string data,string 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;
}
以上代码 return 没有任何错误,但是 return 0 个文档。
这里我将 ProductName
传递给 fieldName
参数。我知道这行不通。我只想在这里说出我的意图。
您可以将下面的内容传递给您的查询
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)
)
)
);
我有一个在C#中搜索的方法如下:
public void Search(string data)
{
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;
}
此returned 5个文件,有效。
但是,我想修改上面的方法如下,这样我就可以动态传递要搜索的字段了。
public void Search(string data,string 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;
}
以上代码 return 没有任何错误,但是 return 0 个文档。
这里我将 ProductName
传递给 fieldName
参数。我知道这行不通。我只想在这里说出我的意图。
您可以将下面的内容传递给您的查询
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)
)
)
);