Springboot整合Elasticsearch、搭建Logstash同步数据

整合Springboot
通过虚拟机搭建ES , 这里使用的版本是6.4.3 , 引入相应依赖
org.springframework.boot
spring-boot-starter-data-elasticsearch#使用2.2.2是为了对应ES的版本2.2.2.RELEASE
引入依赖之后可以自行查看
Springboot整合Elasticsearch、搭建Logstash同步数据
文章图片
spring:data:elasticsearch:#在es中配置的名称cluster-name:es#如果是集群 , 用,分隔cluster-nodes:192.168.1.7:9300
Springboot整合Elasticsearch、搭建Logstash同步数据
文章图片
测试实体类
packagecom.csea.entity;importlombok.Data;importorg.springframework.data.annotation.Id;importorg.springframework.data.elasticsearch.annotations.Document;importorg.springframework.data.elasticsearch.annotations.Field;/***@authorCsea*@title*/@Data@Document(indexName="merchant",type="doc")publicclassMerchant{@IdprivateLongmerchantId;//store=true表示这是要存储的字段@Field(store=true)privateStringname;@Field(store=true)privateStringmob;@Field(store=true)privateStringaddress;@Field(store=true)privateStringdescr;
}
创建索引(文档)
当索引不存在时候 , 会先创建索引 , 并将数据插入 。
@AutowiredprivateElasticsearchTemplateelasticsearchTemplate;@TestpublicvoidcreateIndex{
Merchantmerchant=newMerchant;
merchant.setMerchantId(1001L);
merchant.setName("Csea-杂货铺1");
merchant.setAddress("大道8888号");
merchant.setDescr("好吃的不得了");
merchant.setMob("13899999999");
IndexQueryindexQuery=newIndexQueryBuilder.withObject(merchant).build;
elasticsearchTemplate.index(indexQuery);
}
执行完之后可以看到merchant索引已经创建 , 并且文档也新增了 。
Springboot整合Elasticsearch、搭建Logstash同步数据
文章图片
Springboot整合Elasticsearch、搭建Logstash同步数据
文章图片
更新文档
@TestpublicvoidupdateMerchantDoc{
MapsourceMap=newHashMap<>;
sourceMap.put("name","Csea-杂货铺-update");
sourceMap.put("adress","光明大道8888号");
sourceMap.put("descr","好吃你就多吃点!~");
IndexRequestindexRequest=newIndexRequest;
indexRequest.source(sourceMap);
UpdateQueryquery=newUpdateQueryBuilder.withClass(Merchant.class).withId("1001").withIndexRequest(indexRequest).build;
elasticsearchTemplate.update(query);
}
Springboot整合Elasticsearch、搭建Logstash同步数据
文章图片
查询文档
@TestpublicvoidqueryMerchantDoc{
GetQueryquery=newGetQuery;
query.setId("1001");
Merchantmerchant=elasticsearchTemplate.queryForObject(query,Merchant.class);
log.info("查询到的数据是={}",merchant);
}com.test.ESTest:查询到的数据是=Merchant(merchantId=1001,name=Csea-杂货铺-update,mob=13899999999,address=大道8888号,descr=好吃你就多吃点!~)
删除文档数据
@TestpublicvoiddelMerchantDoc{
elasticsearchTemplate.delete(Merchant.class,"1001");
}
分页文档查询
@TestpublicvoidsearchPageMerchantDoc{
Pageablepageable=PageRequest.of(0,20);
SearchQueryquery=newNativeSearchQueryBuilder
.withQuery(QueryBuilders.matchQuery("description","GodEngineer"))
.withPageable(pageable)
.build;
AggregatedPagemerchants=elasticsearchTemplate.queryForPage(query,Merchant.class);
Listcontent=merchants.getContent;for(Merchantmerchant:content){
log.info("查询到的文档为:{}",merchant);
}
}
高亮分页查询
@TestpublicvoidsearchHightMerchantDoc{
StringpreTag="";
StringpostTg="";
Pageablepageable=PageRequest.of(0,20);//排序SortBuildersortBuilder=newFieldSortBuilder("name")
.order(SortOrder.DESC);
SearchQueryquery=newNativeSearchQueryBuilder//查询的字段.withQuery(QueryBuilders.matchQuery("mob","88"))
.withHighlightFields(newHighlightBuilder.Field("mob")
.preTags(preTag)