เกิดมาเพื่อทำให้การพัฒนาง่ายขึ้น
Easy-Es เป็นชุดเครื่องมือที่ได้รับการปรับปรุงอย่างมีประสิทธิภาพของ RestHighLevelClient เพื่อทำให้การพัฒนาง่ายขึ้น ชุดเครื่องมือนี้มอบคุณสมบัติที่มีประสิทธิภาพ มีประโยชน์ และใช้งานได้ทันทีสำหรับ ElasticSearch เมื่อใช้ Easy-Es คุณจะสามารถใช้ไวยากรณ์ MySQL เพื่อทำแบบสอบถาม Es ได้ ใช้มันสามารถประหยัดเวลาในการพัฒนาของคุณได้อย่างมีประสิทธิภาพ
เว็บไซต์ easy-es https://en.easy-es.cn/
gitcode ง่าย ๆ https://gitcode.com/dromara/easy-es
gitee ง่าย ๆ https://gitee.com/dromara/easy-es
GitHub ง่าย ๆ https://github.com/dromara/easy-es
เว็บไซต์โดรมารา https://dromara.org/
หน้าแรกของ dromara gitee https://gitee.com/dromara/
ความต้องการ: ค้นหาเอกสารทั้งหมดที่มีชื่อเท่ากับ "สวัสดี" และผู้แต่งเท่ากับ "กาย"
// 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 '
เพิ่มไฟล์ mapper ขยายส่วนต่อประสาน 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 หากคุณต้องการเรียนรู้เพิ่มเติม โปรดดูเอกสารประกอบ
MySQL | ง่าย-Es | Es-DSL/Es จาวา api |
---|---|---|
และ | และ | ต้อง |
หรือ | หรือ | ควร |
- | สมการ | ภาคเรียน |
- | ne | boolQueryBuilder.mustNot(queryBuilder) |
- | gt | QueryBuilders.rangeQuery('es ฟิลด์').gt() |
- | ge | .rangeQuery('es field').gte() |
- | lt | .rangeQuery('es field').lt() |
- | เลอ | .rangeQuery('es ฟิลด์').lte() |
เช่น '%ฟิลด์%' | ชอบ | QueryBuilders.wildcardQuery (ฟิลด์ ค่า ) |
ไม่เหมือน '%field%' | ไม่ชอบ | ต้องไม่ใช่ wildcardQuery(field, value ) |
เช่น '%ฟิลด์' | ชอบซ้าย | QueryBuilders.wildcardQuery(ฟิลด์,*ค่า) |
เช่น 'ฟิลด์%' | ชอบขวา | QueryBuilders.wildcardQuery(ฟิลด์ ค่า*) |
ระหว่าง | ระหว่าง | QueryBuilders.rangeQuery('es field').from(xx).ถึง(xx) |
ไม่ระหว่าง | ไม่ระหว่าง | ต้องไม่ QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
เป็นโมฆะ | เป็นค่าว่าง | ต้องไม่ใช่ QueryBuilders.existsQuery (ฟิลด์) |
ไม่เป็นค่าว่าง | ไม่เป็นค่าว่าง | QueryBuilders.existsQuery (ฟิลด์) |
ใน | ใน | QueryBuilders.termsQuery(" ฟิลด์ xx es", xx) |
ไม่เข้า | ไม่อิน | ต้องไม่ QueryBuilders.termsQuery(" xx es field", xx) |
จัดกลุ่มตาม | กลุ่มโดย | AggregationBuilders.terms() |
สั่งซื้อโดย | สั่งซื้อโดย | fieldSortBuilder.order(ASC/DESC) |
นาที | นาที | AggregationBuilders.min |
สูงสุด | สูงสุด | AggregationBuilders.max |
เฉลี่ย | เฉลี่ย | AggregationBuilders.avg |
ผลรวม | ผลรวม | AggregationBuilders.sum |
สั่งซื้อทาง xxx asc | สั่งซื้อโดยAsc | fieldSortBuilder.order(SortOrder.ASC) |
สั่งซื้อโดย xxx รายละเอียด | สั่งซื้อโดยDesc | fieldSortBuilder.order(SortOrder.DESC) |
- | จับคู่ | matchQuery |
- | matchPhrase | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
- | queryStringQuery | QueryBuilders.queryStringQuery |
เลือก * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | ไฮไลท์ | HighlightBuilder.ฟิลด์ |
- | - | - |
บริจาค อีซี่-เอส
Easy-Es อยู่ภายใต้ลิขสิทธิ์ Apache 2.0 ดูรายละเอียดในไฟล์ Apache License 2.0