يعمل هذا المشروع على سد الفجوة بين مرونة استعلامات 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، المصممة خصيصًا لاستعلام DSL الخاص بـ Elasticsearch. إليك ما يمكنك فعله:
$filter
): ترجمة مرشحات OData إلى DSL لاستعلام Elasticsearch، ودعم العوامل المنطقية، وعمليات المقارنة، وبعض الوظائف الأساسية.$orderby
): دعم الفرز حسب حقول متعددة، بما في ذلك دعم الكائنات المتداخلة.$skip
و $top
): قم بتنفيذ ترقيم الصفحات من خلال معلمات Elasticsearch from
size
.$apply
): دعم ترجمة تحويلات التجميع، بما في ذلك وظائف groupby
والتجميع مثل sum
و max
و min
و average
و countdistinct
.$select
): القدرة على تحديد الحقول التي سيتم تضمينها في الاستجابة، وتقليل حجم الحمولة والتركيز على البيانات ذات الصلة.$expand
): دعم تطبيق شروط $filter
و $select
إضافية على الكائنات المتداخلة المعقدة. Equals
(مكافئ)Not Equals
(ني)Greater Than
(جي تي)Greater Than or Equal
(ge)Less Than
(لتر)Less Than or Equal
(le)And
Or
In
startswith
endswith
contains
substringof
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.
إذا واجهت أية مشكلات أو كانت لديك أسئلة، فيرجى تقديم مشكلة في هذا المستودع.