Lahir Untuk Mempermudah Pembangunan
Easy-Es adalah perangkat RestHighLevelClient yang ditingkatkan secara kuat untuk menyederhanakan pengembangan. Toolkit ini menyediakan beberapa fitur yang efisien, berguna, dan siap pakai untuk ElasticSearch. Dengan menggunakan Easy-Es, Anda dapat menggunakan sintaks MySQL untuk menyelesaikan query Es. Menggunakannya secara efektif dapat menghemat waktu pengembangan Anda.
situs web easy-es https://en.easy-es.cn/
kode git mudah https://gitcode.com/dromara/easy-es
mudah-es gitee https://gitee.com/dromara/easy-es
mudah-es github https://github.com/dromara/easy-es
situs web dromara https://dromara.org/
beranda dromara gitee https://gitee.com/dromara/
Permintaan: Kueri semua dokumen dengan judul sama dengan "Hai" dan penulis sama dengan "Orang"
// 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 ();
}
Di atas hanyalah demonstrasi kueri sederhana. Semakin kompleks adegan kueri sebenarnya, semakin baik efeknya, yang rata-rata dapat menghemat 3-5 kali jumlah kode.
Versi Terbaru:
Tambahkan ketergantungan 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 '
Tambahkan file mapper untuk memperluas antarmuka BaseEsMapper
public interface DocumentMapper extends BaseMapper < User > {
}
Gunakan itu
LambdaEsQueryWrapper < Document > wrapper = new LambdaEsQueryWrapper <>();
wrapper . eq ( Document :: getTitle , "Hello World" )
. eq ( Document :: getCreator , "Guy" );
List < Document > documentList = documentMapper . selectList ();
Easy-Es akan menjalankan Query berikut:
{ "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 }}}
Sintaks kueri ini di MySQL adalah:
SELECT * FROM document WHERE title = ' Hello World ' AND creator = ' Guy '
Etalase ini hanyalah sebagian kecil dari fitur Easy-Es. Jika Anda ingin mempelajari lebih lanjut, silakan merujuk ke dokumentasi.
MySQL | Mudah-Es | Es-DSL/Es java api |
---|---|---|
Dan | Dan | harus |
atau | atau | sebaiknya |
= | persamaan | ketentuan |
!= | tidak | boolQueryBuilder.mustNot(queryBuilder) |
> | gt | QueryBuilders.rangeQuery('bidang tersebut').gt() |
>= | ya | .rangeQuery('bidang tersebut').gte() |
< | lt | .rangeQuery('bidang tersebut').lt() |
<= | le | .rangeQuery('bidang tersebut').lte() |
seperti '%bidang%' | menyukai | QueryBuilders.wildcardQuery(bidang, nilai ) |
tidak seperti '%bidang%' | tidak Suka | tidak boleh wildcardQuery(bidang, nilai ) |
seperti '%bidang' | sepertiKiri | QueryBuilders.wildcardQuery(bidang,*nilai) |
seperti 'bidang%' | seperti Benar | QueryBuilders.wildcardQuery(bidang,nilai*) |
di antara | di antara | QueryBuilders.rangeQuery('bidang es').dari(xx).ke(xx) |
bukan di antara | bukan di antara | tidak boleh QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
adalah nol | adalahNull | tidak boleh QueryBuilders.existsQuery(bidang) |
bukan Null | isNotNull | QueryBuilders.existsQuery(bidang) |
di dalam | di dalam | QueryBuilders.termsQuery(" xx bidang", xx) |
tidak masuk | tidak masuk | tidak boleh QueryBuilders.termsQuery(" xx es field", xx) |
kelompokkan menurut | grupOleh | AggregationBuilders.terms() |
pesan berdasarkan | dipesan Oleh | fieldSortBuilder.order(ASC/DESC) |
menit | menit | AggregationBuilders.min |
maks | maks | AggregationBuilders.max |
rata-rata | rata-rata | AggregationBuilders.rata-rata |
jumlah | jumlah | AggregationBuilders.sum |
dipesan berdasarkan xxx asc | orderByAsc | fieldSortBuilder.order(SortOrder.ASC) |
pesan paling lambat xxx desc | pesananOleh Desc | fieldSortBuilder.order(SortOrder.DESC) |
- | cocok | matchQuery |
- | matchPhrase | QueryBuilders.matchPhraseQuery |
- | pertandinganAwalan | QueryBuilders.matchPhrasePrefixQuery |
- | queryStringQuery | QueryBuilders.queryStringQuery |
pilih * | cocokSemuaQuery | QueryBuilders.matchAllQuery() |
- | menyorot | SorotBuilder.Field |
... | ... | ... |
Donasi Easy-Es
Easy-Es berada di bawah lisensi Apache 2.0. Lihat file Apache License 2.0 untuk detailnya.