ولد لتبسيط التنمية
Easy-Es عبارة عن مجموعة أدوات محسّنة بقوة من RestHighLevelClient لتبسيط عملية التطوير. توفر مجموعة الأدوات هذه بعض الميزات الفعالة والمفيدة والجاهزة لـ ElasticSearch. باستخدام Easy-Es، يمكنك استخدام بناء جملة MySQL لإكمال استعلامات Es. استخدامه يمكن أن يوفر بشكل فعال وقت التطوير الخاص بك.
موقع easy-es https://en.easy-es.cn/
easy-es gitcode https://gitcode.com/dromara/easy-es
easy-es gitee https://gitee.com/dromara/easy-es
easy-es جيثب https://github.com/dromara/easy-es
موقع درومارا https://dromara.org/
الصفحة الرئيسية لـ Dromara gitee https://gitee.com/dromara/
الطلب: الاستعلام عن جميع المستندات التي يكون عنوانها "Hi" والمؤلف يساوي "Guy"
// Use Easy-Es to complete the query with only 1 lines of code
List < Document > documents = documentMapper . selectList ( EsWrappers . lambdaQuery ( Document . class ). eq ( Document :: getTitle , "Hi" ). eq ( Document :: getCreator , "Guy" ));
// Query with RestHighLevelClient requires 11 lines of code, not including parsing JSON code
String indexName = "document" ;
SearchRequest searchRequest = new SearchRequest ( indexName );
BoolQueryBuilder boolQueryBuilder = QueryBuilders . boolQuery ();
TermQueryBuilder titleTerm = QueryBuilders . termQuery ( "title" , "Hi" );
TermsQueryBuilder creatorTerm = QueryBuilders . termsQuery ( "creator" , "Guy" );
boolQueryBuilder . must ( titleTerm );
boolQueryBuilder . must ( creatorTerm );
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder ();
searchSourceBuilder . query ( boolQueryBuilder );
searchRequest . source ( searchSourceBuilder );
try {
SearchResponse searchResponse = restHighLevelClient . search ( searchRequest , RequestOptions . DEFAULT );
// Then parse the DocumentList from searchResponse in various ways, omitting these codes...
} catch ( IOException e ) {
e . printStackTrace ();
}
ما ورد أعلاه هو مجرد عرض استعلام بسيط. كلما كان مشهد الاستعلام الفعلي أكثر تعقيدًا، كان التأثير أفضل، والذي يمكن أن يوفر 3-5 أضعاف كمية التعليمات البرمجية في المتوسط.
أحدث نسخة:
أضف تبعية Easy-Es
< dependency >
< groupId >org.dromara.easy-es</ groupId >
< artifactId >easy-es-boot-starter</ artifactId >
< version >Latest Version</ version >
</ dependency >
compile group : ' org.dromara.easy-es ' , name : ' easy-es-boot-starter ' , version : ' Latest Version '
إضافة ملف مخطط يمتد إلى واجهة BaseEsMapper
public interface DocumentMapper extends BaseMapper < User > {
}
استخدمه
LambdaEsQueryWrapper < Document > wrapper = new LambdaEsQueryWrapper <>();
wrapper . eq ( Document :: getTitle , "Hello World" )
. eq ( Document :: getCreator , "Guy" );
List < Document > documentList = documentMapper . selectList ();
سيقوم Easy-Es بتنفيذ الاستعلام التالي:
{ "query" :{ "bool" :{ "must" :[{ "term" :{ "title" :{ "value" : " Hello World " , "boost" : 1.0 }}},{ "term" :{ "creator" :{ "value" : " Guy " , "boost" : 1.0 }}}], "adjust_pure_negative" : true , "boost" : 1.0 }}}
بناء جملة هذا الاستعلام في MySQL هو:
SELECT * FROM document WHERE title = ' Hello World ' AND creator = ' Guy '
يعد هذا العرض مجرد جزء صغير من ميزات Easy-Es. إذا كنت تريد معرفة المزيد، يرجى الرجوع إلى الوثائق.
ماي إس كيو إل | سهل-Es | Es-DSL/Es جافا API |
---|---|---|
و | و | يجب |
أو | أو | يجب |
= | مكافئ | شرط |
!= | شمال شرق | boolQueryBuilder.mustNot(queryBuilder) |
> | GT | QueryBuilders.rangeQuery('es field').gt() |
>= | ge | .rangeQuery('es field').gte() |
< | لتر | .rangeQuery('es field').lt() |
<= | لو | .rangeQuery('es field').lte() |
مثل "%الحقل%" | يحب | QueryBuilders.wildcardQuery(حقل، قيمة ) |
ليس مثل '%field%' | ليس مثل | يجب ألا يكون استعلام البدل (حقل، قيمة ) |
مثل "%الحقل" | likeLeft | QueryBuilders.wildcardQuery(حقل،*قيمة) |
مثل "الحقل٪" | likeRight | QueryBuilders.wildcardQuery(حقل، قيمة*) |
بين | بين | QueryBuilders.rangeQuery('es field').من(xx).to(xx) |
ليس بين | ليس بين | يجب ألا يكون QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
فارغة | isNull | يجب ألا يكون QueryBuilders.existsQuery(field) |
ليس فارغًا | isNotNull | QueryBuilders.existsQuery(حقل) |
في | في | QueryBuilders.termsQuery("حقل xx es"، xx) |
ليس في | ليس في | يجب ألا يكون QueryBuilders.termsQuery("xx es field"، xx) |
مجموعة بواسطة | groupBy | AggregationBuilders.terms() |
طلب بواسطة | orderBy | fieldSortBuilder.order(ASC/DESC) |
دقيقة | دقيقة | AggregationBuilders.min |
الأعلى | الأعلى | AggregationBuilders.max |
متوسط | متوسط | AggregationBuilders.avg |
مجموع | مجموع | AggregationBuilders.sum |
الترتيب حسب xxx تصاعدي | orderByAsc | fieldSortBuilder.order(SortOrder.ASC) |
الطلب حسب وصف xxx | orderByDesc | fieldSortBuilder.order(SortOrder.DESC) |
- | مباراة | matchQuery |
- | matchPhrase | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
- | queryStringQuery | QueryBuilders.queryStringQuery |
يختار * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | تسليط الضوء | HighlightBuilder.Field |
... | ... | ... |
تبرع بسهولة-Es
Easy-Es موجود تحت ترخيص Apache 2.0. راجع ملف ترخيص Apache 2.0 للحصول على التفاصيل.