我正在嘗試為我的 BoolQuery 構建一個過濾器。
回應物件包含一個包含 2 個屬性的物件,一個 bool 和另一個物件的串列,如下所示:
responsObject : {
innerObject : {
myinnerObjectBoolProperty: Bool,
myinnerObjectListProperty : [
{
innerObjectType: myEnum,
// otherProperties
},
{
innerObjectType: myEnum,
// otherProperties
}
]
} ,
// other properties
}
我有一個方法IEnumerable<QueryContainer>在我構建過濾器后回傳一個為查詢構建過濾器我將它們分配給 BoolQuery 的 MustBoolQuery bQuery屬性并將該 BoolQuery 分配給 SeachRequest 的 Query 屬性并將其傳遞給 ElasticClient 的 Search 方法
var searchRequest = new SearchRequest()
{
Query = bQuery,
// other assignments
};
var response = client.Search<responsObject >(searchRequest);
在上面提到的方法中,
通過 bool 屬性的過濾作業正常,如下所示:
if (filterValuesList.Contains("myBoolProperty", StringComparer.OrdinalIgnoreCase))
{
var termQuery = new TermQuery()
{
Field = "innerObject.myBoolProperty",
Value = "true"
};
queries.Add(termQuery);
}
但我想做的是過濾在 myEnum 中具有特定值的物件。
var termQuery = new TermQuery()
{
Field = "innerObject.myinnerObjectListProperty.innerObjectType",
Value = "certainType"
};
但是當我那樣做時它不起作用。只是我要實作的目標相當于此 LINQ 陳述句:
var result = responsObjects.Where(i =>i.innerObject.myinnerObjectListProperty.Any(p => p.innerObjectType == innerObjectType.CertainType));
uj5u.com熱心網友回復:
我想出了問題是什么。我在 myEnum 屬性上有一個屬性可以將列舉轉換為字串,例如 : [JsonConverter(typeof(StringEnumConverter))]
所以我認為我應該傳遞列舉的字串值。我嘗試傳遞列舉的基礎型別(它是 int)所以它就像一個魅力
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537899.html
標籤:C#弹性搜索巢弹性搜索网
上一篇:nodejs或nestjs中基于條件的elasticsearch方法
下一篇:搜索模板中的小胡子雙引號問題
