[英]Elastic search - add term dynamically in bool query
我正在形成如下的弹性搜索查询。 我想动态遍历values数组并构造查询,而不是对数组成员进行硬编码。
var myQuery = q.Bool(bb => bb.Must(fi => fi.Term("_type", "myValue"),
fi => fi.Term("tags", values[0]),
fi => fi.Term("tags", values[1]),
fi => fi.Term("tags", values[2]),
fi => fi.Term("tags", values[3]),
fi => fi.QueryString(ques => ques.Query(query))));
我想执行以下操作,因为值数组中的项目数可能会不时发生变化
var myQuery = q.Bool(bb => bb.Must(fi => fi.Term("_type", "myValue"),
foreach(item in Values)
{
fi => fi.Term("tags", item),
}
fi => fi.QueryString(ques => ques.Query(query))));
你可以做这样的事情,
List<QueryContainer> myDynamicTermQuery = new List<QueryContainer>();
// Start of Logic
myDynamicTermQuery.Add(Query<YourType>.Term("_type", myValue))
foreach(item in Values)
{
myDynamicTermQuery.Add(Query<YourType>.Term("tags", item))
}
myDynamicTermQuery.Add(Query<YourType>.QueryString(ques => ques.Query(query)))
// End of Logic
var myQuery = q.Bool(bb => myDynamicTermQuery)
得到它的工作。
var myQuery = q.Bool(bb =>bb.Must(fi =>
{
var ff = fi.Term("_type", myValue);
ff = ssTerms.Aggregate(ff, (current, term) => current & fi.Term("tags", term));
ff &= fi.QueryString(ques => ques.Query(query));
return ff;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.