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)And
Or
In
startswith
endswith
contains
substringof
any
all
枚舉被視為字串,允許直接比較,無需額外的轉換步驟。可以使用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 許可證獲得許可。
如果您遇到任何問題或有疑問,請在此儲存庫上提出問題。