elasticsearch odata net
1.0.0
此專案彌補了 OData 查詢的靈活性和 Elasticsearch 強大的搜尋功能之間的差距,讓您可以利用 OData 查詢語法來查詢 Elasticsearch 索引。無論您是處理複雜的巢狀物件、數組,還是只需要執行簡單的搜索,此擴充功能都能滿足您的需求。
要開始使用此擴展,請將其包含在您的專案中並將其配置為指向您的 Elasticsearch 實例。這是一個簡單的例子:
PM> Install-Package Nest.OData TargetFramework: net8.0
Dependencies:
Microsoft.AspNetCore.OData (>= 8.2.5)
NEST (>= 7.17.5)
[ HttpGet ]
public async Task < IActionResult > Get ( ODataQueryOptions < Document > queryOptions )
{
var searchDescriptor = queryOptions . ToElasticQuery < Document > ( ) ;
var response = await _elasticClient . SearchAsync < Document > ( searchDescriptor ) ;
if ( response . IsValid )
{
return Ok ( response . Documents ) ;
}
else
{
return BadRequest ( ) ;
}
}將Document替換為映射到 Elasticsearch 索引的文檔類別。
此擴充功能支援廣泛的 OData 查詢功能,專為 Elasticsearch 的查詢 DSL 量身定制。您可以執行以下操作:
$filter ):將 OData 過濾器轉換為 Elasticsearch 查詢 DSL,支援邏輯運算子、比較操作和一些基本功能。$orderby ):支援按多個欄位排序,包括支援嵌套物件。$skip和$top ):透過 Elasticsearch 的from和size參數實現分頁。$apply ):支援轉換聚合轉換,包括groupby和聚合函數,例如sum 、 max 、 min 、 average和countdistinct 。$select ):能夠指定回應中包含哪些字段,減少有效負載大小並專注於相關資料。$expand ):支援在複雜的巢狀物件上套用附加$filter和$select條件。 Equals (eq)Not Equals (ne)Greater Than (gt)Greater Than or Equal (ge)Less Than (lt)Less Than or Equal (le)AndOrInstartswithendswithcontainssubstringofanyall枚舉被視為字串,允許直接比較,無需額外的轉換步驟。可以使用any 和all 函數查詢集合(包括簡單數組和嵌套物件),從而為處理複雜資料結構提供無縫體驗。
此擴充功能提供了對巢狀查詢的支持,可讓您深入研究文件中的巢狀物件和陣列以執行細粒度搜尋。無論您是過濾巢狀物件的屬性還是查詢陣列中的特定元素,此擴充都會將您的 OData 查詢轉換為高效的 Elasticsearch DSL 查詢。
$filter=Tags/any(t: t/Name eq 'bug')
{
"query" : {
"nested" : {
"path" : " Tags " ,
"query" : {
"term" : {
"Name" : {
"value" : " bug "
}
}
}
}
}
} $filter=Category in ('Electronics', 'Books')
{
"query" : {
"terms" : {
"Category" : [ " Electronics " , " Books " ]
}
}
} $filter=Id eq 42 and ((Color eq 'Red') or (Color eq 'Green') or (Color eq 'Blue'))
{
"query" : {
"bool" : {
"must" : [
{
"term" : {
"Id" : {
"value" : 42
}
}
},
{
"bool" : {
"minimum_should_match" : 1 ,
"should" : [
{
"term" : {
"Color" : {
"value" : " Red "
}
}
},
{
"term" : {
"Color" : {
"value" : " Green "
}
}
},
{
"term" : {
"Color" : {
"value" : " Blue "
}
}
}
]
}
}
]
}
}
}歡迎貢獻!無論您是要修復錯誤、添加新功能還是改進文檔,請隨時提出拉取請求。
該專案根據 MIT 許可證獲得許可。
如果您遇到任何問題或有疑問,請在此儲存庫上提出問題。