? 地址:? https://github.com/tokenIsme/elasticSearchHelper
使用方式:
1. 創(chuàng)建連接 創(chuàng)建setting mapping index
//創(chuàng)建連接 鏈接方式1 然后使用accessor 對(duì)象進(jìn)行增刪改查數(shù)據(jù)
```?
publicclassTestIndex{publicstaticvoidmain(String[]args) {IAccessoraccessor=newClientFactoryBuilder? ? ? ? ? ? ? ? .Builder()? ? ? ? ? ? ? ? .setCLUSTER_NAME("elasticsearch")//es別名.setCLIENT_PORT(9300)//es 端口.setHOSTS(newArrayList<>(Arrays.asList("127.0.0.1")))//es 地址.create();//創(chuàng)建連接 鏈接方式2IAccessoraccessor2=newClientFactoryBuilder? ? ? ? ? ? ? ? .Config()? ? ? ? ? ? ? ? .setConfigPath("elasticsearch.properties")? ? ? ? ? ? ? ? .initConfig(true)? ? ? ? ? ? ? ? .createByConfig();//構(gòu)建indexhelperIndexAccessorindexAccessor=newIndexHelperBuilder? ? ? ? ? ? ? ? .Builder()? ? ? ? ? ? ? ? .withClient(accessor.getClient())? ? ? ? ? ? ? ? .creatAccessor();//創(chuàng)建索引 mapping 和setting//通過model 生成index mapping? 和settingbooleanflag=indexAccessor.createIndexWithSettings(TestModel.class);//添加一條數(shù)據(jù)TestModelmodel=newTestModel();? ? ? ? model.setPost_id(1);? ? ? ? model.setCreatetime(newDate().toString());? ? ? ? model.setIs_delete(1);? ? ? ? model.setPost_title("測(cè)試啊");booleanflagAdd=accessor.add(model);//添加多條數(shù)據(jù)、ListtestModelList=newArrayList<>();for(inti=0; i<=10; i++) {TestModelmodel2=newTestModel();? ? ? ? ? ? model2.setPost_id(i);//主鍵不要重復(fù) 重復(fù)的做updata操作model2.setCreatetime(newDate().toString());? ? ? ? ? ? model2.setIs_delete(1);? ? ? ? ? ? model2.setPost_title("測(cè)試啊");? ? ? ? ? ? testModelList.add(model2);? ? ? ? }booleanflagAddList=accessor.add(testModelList);//刪除一條 id 為1的數(shù)據(jù)accessor.delete("1",TestModel.class);//詳情見IAccessor 接口}? ? ? ? }
```
2. es搜索
```
publicclassTestSearch{publicstaticvoidmain(String[]args) {BoolQueryBuilderrootBuilder=QueryBuilders.boolQuery();//搜索商品名稱 名稱進(jìn)行ik分詞+商品skuMapfieldsMap=newHashMap<>();? ? ? ? ? ? fieldsMap.put("product_name.ik", (float)2);? ? ? ? ? ? fieldsMap.put("product_code", (float)1);QueryStringQueryBuilderfieldsMapBuilder=newQueryStringQueryBuilder(keyWord);? ? ? ? ? ? fieldsMapBuilder.fields(fieldsMap);//創(chuàng)建過濾構(gòu)造builderBoolQueryBuilderfilterbuilder=QueryBuilders.boolQuery();//添加過濾參數(shù) 未刪除的已經(jīng)上架的商品filterbuilder.must(QueryBuilders.termQuery("is_delete",0));? ? ? ? ? ? filterbuilder.must(QueryBuilders.termQuery("seller_status",1));//構(gòu)造總體查詢r(jià)ootBuilder.filter(filterbuilder);? ? ? ? ? ? rootBuilder.should(fieldsMapBuilder);//創(chuàng)建QueryBuilderCondition 構(gòu)建整體的查詢QueryBuilderConditionbooleanCondtionBuilder=newQueryBuilderCondition.builder()? ? ? ? ? ? ? ? ? ? .setBoolQueryBuilder(rootBuilder)? ? ? ? ? ? ? ? ? ? .setStart(pageSize*(pageIndex-1))? ? ? ? ? ? ? ? ? ? .setRow(pageSize)? ? ? ? ? ? ? ? ? ? .setMinScore(0)? ? ? ? ? ? ? ? ? ? .builder();Resultresult=null;try{//開始搜索 just for funresult=EleasticAccessorManager.ACCESSOR_MANAGE.getAccessor()? ? ? ? ? ? ? ? ? ? ? ? .searchFun(ProductsEntity.class, booleanCondtionBuilder);? ? ? ? ? ? }catch(Exceptione) {? ? ? ? ? ? ? ? logger.error("elasticSearch 查詢接口異常 異常信息:"+e.getMessage());? ? ? ? ? ? }//查詢的數(shù)據(jù)listresult.getList();? ? result.getSearchHits().getTotalHits()? ? }? ? }
```
3. 數(shù)據(jù)實(shí)體類
```
importannotations.Document;importannotations.Field;importannotations.ID;importdata.FieldType;/***@Author:yang*@Date:2018/3/8.18:15*@Desc:es 建索引實(shí)體類*/@Document(index="index",type="type",replicas=1,shards=5,settings="Setting.json")publicclassProductsEntity{@IDprivateIntegerpost_id;@Field(type=FieldType.date)privateStringcreatetime;@Field(type=FieldType.date)privateStringupdatatime;@Field(type=FieldType.keyword,fields=true,fieldsName={"ik","pinyin","first_py"},fieldsAnalyzer={"ik_max_word","full_pinyin_letter_analyzer","first_py_letter_analyzer"})privateStringpost_title;@Field(type=FieldType.keyword,fields=true,fieldsName={"ik","pinyin","first_py"},fieldsAnalyzer={"ik_max_word","full_pinyin_letter_analyzer","first_py_letter_analyzer"})privateStringpost_content;@Field(type=FieldType.keyword,fields=true,fieldsName={"ik","pinyin","first_py"},fieldsAnalyzer={"ik_max_word","full_pinyin_letter_analyzer","first_py_letter_analyzer"})privateStringbtt_name;@Field(type=FieldType.text)privateStringpost_img;@Field(type=FieldType.Integer)privateIntegercomments_amount;@Field(type=FieldType.Integer)privateIntegerlike_amount;@Field(type=FieldType.Integer)privateIntegergreen_status;@Field(type=FieldType.Integer)privateIntegeris_delete;@Field(type=FieldType.Integer)privateIntegeruser_id;@Field(type=FieldType.text)privateStringuser_avatar;@Field(type=FieldType.keyword,fields=true,fieldsName={"ik","pinyin","first_py"},fieldsAnalyzer={"ik_max_word","full_pinyin_letter_analyzer","first_py_letter_analyzer"})privateStringnick_name;publicStringgetBtt_name() {returnbtt_name;? ? }publicvoidsetBtt_name(Stringbtt_name) {this.btt_name=btt_name;? ? }publicIntegergetGreen_status() {returngreen_status;? ? }publicvoidsetGreen_status(Integergreen_status) {this.green_status=green_status;? ? }publicIntegergetIs_delete() {returnis_delete;? ? }publicvoidsetIs_delete(Integeris_delete) {this.is_delete=is_delete;? ? }publicIntegergetPost_id() {returnpost_id;? ? }publicvoidsetPost_id(Integerpost_id) {this.post_id=post_id;? ? }publicStringgetCreatetime() {returncreatetime;? ? }publicvoidsetCreatetime(Stringcreatetime) {this.createtime=createtime;? ? }publicStringgetUpdatatime() {returnupdatatime;? ? }publicvoidsetUpdatatime(Stringupdatatime) {this.updatatime=updatatime;? ? }publicStringgetPost_title() {returnpost_title;? ? }publicvoidsetPost_title(Stringpost_title) {this.post_title=post_title;? ? }publicStringgetPost_content() {returnpost_content;? ? }publicvoidsetPost_content(Stringpost_content) {this.post_content=post_content;? ? }publicStringgetPost_img() {returnpost_img;? ? }publicvoidsetPost_img(Stringpost_imgs) {this.post_img=post_imgs;? ? }publicIntegergetComments_amount() {returncomments_amount;? ? }publicvoidsetComments_amount(Integercomments_amount) {this.comments_amount=comments_amount;? ? }publicIntegergetLike_amount() {returnlike_amount;? ? }publicvoidsetLike_amount(Integerlike_amount) {this.like_amount=like_amount;? ? }publicIntegergetUser_id() {returnuser_id;? ? }publicvoidsetUser_id(Integeruser_id) {this.user_id=user_id;? ? }publicStringgetUser_avatar() {returnuser_avatar;? ? }publicvoidsetUser_avatar(Stringuser_avatar) {this.user_avatar=user_avatar;? ? }publicStringgetNick_name() {returnnick_name;? ? }publicvoidsetNick_name(Stringnick_name) {this.nick_name=nick_name;? ? }}
```