我们需要搜索要查询可变/动态数量字段的文档类型。对于一种搜索/类型,它可能是名称和状态。另外,描述字段。用户将在运行时选择要搜索的字段。
静态地做到这一点看起来很容易。可以在“名称”和“描述”字段中进行搜索。 (假设rootQuery是准备好进行查询的有效searchDescriptor。
rootQuery.Query(q => q.MultiMatch(mm => mm.Query(filter.Value.ToString()).Fields(f => f.Field(ff => ff.Name).Field(ff => ff.Description))));
但是,我们不希望有一个静态查询库来处理可能的排列(如果可能)。我们宁愿做一些动态的事情,例如:
foreach (var field in string-list-of-fields-from-user)
{
rootQuery.Query(q => q.MultiMatch(mm => mm.Query(filter.Value.ToString()).Fields(f => f.Field(ff => field);
}
这可能吗?如果是这样,怎么办?
最佳答案
您可以将字段的string
列表直接传递给.Fields(...)
var searchResponse = client.Search<Document>(s => s
.Query(q => q
.MultiMatch(mm => mm
.Query("query")
.Fields(new string[] { "field1", "field2", "field3" })
)
)
);
产生
{
"query": {
"multi_match": {
"fields": ["field1", "field2", "field3"],
"query": "query"
}
}
}
关于elasticsearch - MultiMatch的动态字段列表-Nest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827534/