Proyek ini menjembatani kesenjangan antara fleksibilitas kueri OData dan kemampuan pencarian Elasticsearch yang canggih, memungkinkan Anda memanfaatkan sintaksis kueri OData untuk mengkueri indeks Elasticsearch Anda. Baik Anda berurusan dengan objek bertumpuk yang kompleks, array, atau hanya perlu melakukan penelusuran sederhana, ekstensi ini siap membantu Anda.
Untuk mulai menggunakan ekstensi ini, sertakan ekstensi ini dalam proyek Anda dan konfigurasikan agar mengarah ke instans Elasticsearch Anda. Berikut ini contoh singkatnya:
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 ( ) ;
}
} Ganti Document dengan kelas dokumen Anda yang dipetakan ke indeks Elasticsearch Anda.
Ekstensi ini mendukung berbagai fungsi kueri OData, yang dirancang khusus untuk DSL kueri Elasticsearch. Inilah yang dapat Anda lakukan:
$filter ): Terjemahkan filter OData ke DSL kueri Elasticsearch, yang mendukung operator logika, operasi perbandingan, dan beberapa fungsi dasar.$orderby ): Dukungan untuk mengurutkan berdasarkan beberapa bidang, termasuk dukungan untuk objek bersarang.$skip dan $top ): Menerapkan pagination melalui parameter from dan size Elasticsearch.$apply ): Dukungan untuk menerjemahkan transformasi agregasi, termasuk fungsi groupby dan agregat seperti sum , max , min , average , dan countdistinct .$select ): Kemampuan untuk menentukan bidang mana yang akan disertakan dalam respons, mengurangi ukuran muatan dan fokus pada data yang relevan.$expand ): Dukungan untuk menerapkan kondisi $filter dan $select tambahan pada objek bersarang yang kompleks. Equals (persamaan)Not Equals (ne)Greater Than (gt)Greater Than or Equal (ge)Less Than (lt)Less Than or Equal (le)AndOrInstartswithendswithcontainssubstringofanyallEnum diperlakukan sebagai string, memungkinkan perbandingan langsung tanpa langkah konversi tambahan. Koleksi, termasuk array sederhana dan objek bersarang, dapat dikueri menggunakan fungsi apa saja dan semua, memberikan pengalaman yang lancar untuk bekerja dengan struktur data yang kompleks.
Ekstensi ini menyediakan dukungan untuk kueri bersarang, memungkinkan Anda mempelajari objek dan array bersarang dalam dokumen Anda untuk melakukan pencarian yang lebih detail. Baik Anda memfilter properti objek bertingkat atau membuat kueri array untuk elemen tertentu, ekstensi ini menerjemahkan kueri OData Anda menjadi kueri DSL Elasticsearch yang efisien.
$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 "
}
}
}
]
}
}
]
}
}
}Kontribusi dipersilahkan! Baik Anda sedang memperbaiki bug, menambahkan fitur baru, atau menyempurnakan dokumentasi, silakan membuat permintaan penarikan.
Proyek ini dilisensikan di bawah Lisensi MIT.
Jika Anda mengalami masalah atau memiliki pertanyaan, silakan ajukan masalah di repositori ini.