[英]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.