개발을 단순화하기 위해 탄생
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 github https://github.com/dromara/easy-es
드로마라 홈페이지 https://dromara.org/
드로마라 지티 홈페이지 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 기능의 일부일 뿐입니다. 더 자세히 알고 싶다면 설명서를 참조하세요.
MySQL | 이지-에스 | Es-DSL/Es 자바 API |
---|---|---|
그리고 | 그리고 | ~ 해야 하다 |
또는 | 또는 | ~해야 한다 |
= | eq | 용어 |
!= | 네 | boolQueryBuilder.mustNot(queryBuilder) |
> | gt | QueryBuilders.rangeQuery('es 필드').gt() |
>= | 게 | .rangeQuery('es 필드').gte() |
< | lt | .rangeQuery('es 필드').lt() |
<= | 르 | .rangeQuery('es 필드').lte() |
'%필드%'와 같은 | 좋다 | QueryBuilders.wildcardQuery(필드, 값 ) |
'%field%'와는 다르다 | 좋아하지 않는다 | wildcardQuery(필드, 값 )을 사용하면 안 됩니다. |
'%필드'와 같은 | 좋아요왼쪽 | QueryBuilders.wildcardQuery(필드,*값) |
'필드%'와 같은 | 좋아요 | QueryBuilders.wildcardQuery(필드,값*) |
~ 사이 | ~ 사이 | QueryBuilders.rangeQuery('es 필드').from(xx).to(xx) |
사이가 아니다 | 사이가 아니야 | QueryBuilders.rangeQuery('es field').from(xx).to(xx)가 아니어야 합니다. |
null임 | isNull | QueryBuilders.existsQuery(필드)가 아니어야 합니다. |
Null이 아님 | isNotNull | 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로 주문 | 오름차순으로 주문 | fieldSortBuilder.order(SortOrder.ASC) |
xxx 설명으로 주문 | 순서별 설명 | fieldSortBuilder.order(SortOrder.DESC) |
- | 성냥 | matchQuery |
- | matchPhrase | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefix쿼리 |
- | 쿼리문자열쿼리 | QueryBuilders.queryStringQuery |
선택하다 * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | 가장 밝은 부분 | 하이라이트빌더.필드 |
... | ... | ... |
Easy-Es 기부
Easy-Es는 Apache 2.0 라이센스를 따릅니다. 자세한 내용은 Apache 라이센스 2.0 파일을 참조하십시오.