Elasticsearch.Net(NEST) Terms查询多字段匹配 - zLulus/My_Note GitHub Wiki
目标:传参整数型数组[1,2,3,4.....],查询其匹配字段A、B、C中的任意一个的所有数据
查询语句:
{
"query": {
"bool": {
"should": [
{
"terms": {
"filedA": [1,2,3,4.....]
}
},
{
"terms": {
"filedB": [1,2,3,4.....]
}
},
{
"terms": {
"filedC": [1,2,3,4.....]
}
}
]
}
}
}
对应代码如下:
BoolQueryDescriptor<SMCommodity> boolQueryDescriptor = ...;
IList<Func<QueryContainerDescriptor<ModelClass>, QueryContainer>> queryContainers = new List<Func<QueryContainerDescriptor<ModelClass>, QueryContainer>>();
queryContainers.Add(queryContainerDescriptor =>
{
return queryContainerDescriptor.Terms(termQueryDescriptor =>
{
return termQueryDescriptor.Field(nameof(ModelClass.FiledA).ToJavaScriptPropertyName()).Terms(condition.DataArray);
});
});
queryContainers.Add(queryContainerDescriptor =>
{
return queryContainerDescriptor.Terms(termQueryDescriptor =>
{
return termQueryDescriptor.Field(nameof(ModelClass.FiledB).ToJavaScriptPropertyName()).Terms(condition.DataArray);
});
});
queryContainers.Add(queryContainerDescriptor =>
{
return queryContainerDescriptor.Terms(termQueryDescriptor =>
{
return termQueryDescriptor.Field(nameof(ModelClass.FiledC).ToJavaScriptPropertyName()).Terms(condition.DataArray);
});
});
boolQueryDescriptor = boolQueryDescriptor.Should(queryContainers);