这里主要使用到两个东西,EelasticSearch和Elasticsearch-head elasticsearch下载地址:https://www.elastic.co/cn/elasticsearch/ 简单说一下es-head如何使用https://github.com/mobz/elasticsearch-head 下载后解压,进入到目录,npm install,npm run start 出现一下结果即代表运行成功,访问localhost:9100   开始使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
@Configuration
public class ElasticSearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")
)
);
return restHighLevelClient;
}
}
1、创建索引
//创建索引
CreateIndexRequest createIndexRequest = new CreateIndexRequest("receive");
CreateIndexResponse create = esClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
boolean acknowledged = create.isAcknowledged();
System.err.println(acknowledged);
 2、索引是否存在
GetIndexRequest getIndexRequest = new GetIndexRequest("receive");
boolean exists = esClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
System.err.println(exists);
3、删除索引
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("receive");
AcknowledgedResponse delete = esClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
System.err.println(delete.isAcknowledged());
4、索引新增文档
IndexRequest indexRequest = new IndexRequest("receive");//指定索引
indexRequest.id("1");//
Content content = new Content(1, "一个名字而已", 10, "没有什么好说的");
indexRequest.source(JSON.toJSONString(content), XContentType.JSON);
IndexResponse response = esClient.index(indexRequest, RequestOptions.DEFAULT);
 5、查询某文档是否存在
GetRequest getRequest = new GetRequest("receive","1");
boolean exists = esClient.exists(getRequest, RequestOptions.DEFAULT);
System.err.println(exists);
6、查询文档内容
GetRequest getRequest = new GetRequest("receive","1");
GetResponse getResponse = esClient.get(getRequest, RequestOptions.DEFAULT);
System.err.println(getResponse.getSourceAsString());
 7、删除指定文档
DeleteRequest deleteRequest = new DeleteRequest("receive", "1");
DeleteResponse delete = esClient.delete(deleteRequest, RequestOptions.DEFAULT);
System.err.println(delete.status());
8、批量创建索引
List<Receive> list = receiveMapper.selectAll();
boolean exists = restHighLevelClient.indices().exists(new GetIndexRequest("receive"), RequestOptions.DEFAULT);
if(exists) {
restHighLevelClient.indices().delete(new DeleteIndexRequest("receive"), RequestOptions.DEFAULT);
}
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("30s");
for (int i = 0; i < list.size(); i++) {
bulkRequest.add(
new IndexRequest("receive")
.id(list.get(i).getId()+"")
.source(JSON.toJSONString(list.get(i)), XContentType.JSON)
);
}
BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
boolean hasFailures = bulk.hasFailures();
if(hasFailures) {
return Result.fail("添加索引失败");
}else {
return Result.ok("添加索引成功");
}
 9、查询演示
@PostMapping("/listData")
public Result listData(@RequestBody Receive receive) throws IOException {
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
//MultiMatchQueryBuilder multiMatchQuery = QueryBuilders.multiMatchQuery("vue光头", "title", "descs");//匹配多字段
if(!StringUtils.isEmpty(receive.getTm())) {
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("tm", receive.getTm());
boolBuilder.must(matchQueryBuilder);//条件查询
}
if(!StringUtils.isEmpty(receive.getDh())) {
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("dh", receive.getDh());
boolBuilder.must(matchQueryBuilder);//条件查询
}
if(!StringUtils.isEmpty(receive.getWh())) {
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("wh", receive.getWh());
boolBuilder.must(termQueryBuilder);//条件查询
}
if(!StringUtils.isEmpty(receive.getZrz())) {
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("zrz", receive.getZrz());
boolBuilder.must(matchQueryBuilder);//条件查询
}
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("id");//范围查询
rangeQueryBuilder.gte(15);
rangeQueryBuilder.lte(30);
//boolBuilder.must(rangeQueryBuilder);
//boolBuilder.filter(QueryBuilders.rangeQuery("id").from(200).to(8390));//过滤
sourceBuilder.query(boolBuilder);
sourceBuilder.from((receive.getPageNum()-1)*receive.getPageSize());
sourceBuilder.size(receive.getPageSize());
//sourceBuilder.sort(SortBuilders.fieldSort("id").order(SortOrder.ASC));//字段排序
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); //查询时间
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("tm");
highlightBuilder.field("dh");
highlightBuilder.field("zrz");
highlightBuilder.requireFieldMatch(false);
highlightBuilder.preTags("<span style = 'color:red'>");
highlightBuilder.postTags("</span>");
sourceBuilder.highlighter(highlightBuilder);
SearchRequest searchRequest = new SearchRequest("receive");
searchRequest.source(sourceBuilder);
SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHit[] hits = search.getHits().getHits();
List<Map<String,Object>> listMap = new ArrayList<>();
for(SearchHit hit:hits) {
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
HighlightField tm = highlightFields.get("tm");
HighlightField dh = highlightFields.get("dh");
HighlightField zrz = highlightFields.get("zrz");
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
//解析高亮字段 ,将原来的字段换成高亮字段显示
if(tm!=null){
Text[] fragments = tm.fragments();
String newTm = "";
for (Text fragment : fragments) {
newTm+=fragment;
}
//高亮字段替换原来内容
sourceAsMap.put("tm",newTm);
}
if(dh!=null){
Text[] fragments = dh.fragments();
String newDh = "";
for (Text fragment : fragments) {
newDh+=fragment;
}
//高亮字段替换原来内容
sourceAsMap.put("dh",newDh);
}
if(zrz!=null){
Text[] fragments = zrz.fragments();
String newZrz = "";
for (Text fragment : fragments) {
newZrz+=fragment;
}
//高亮字段替换原来内容
sourceAsMap.put("zrz",newZrz);
}
listMap.add(sourceAsMap);
}
Map<String,Object> map = new HashMap<>();
map.put("total", search.getHits().getTotalHits().value);
map.put("data", listMap);
return Result.ok(map);
}
   基本的使用就是这样,更多复杂的操作,可以自行研究。 贴心的把相关导包附上
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.http.HttpHost;
import org.apache.lucene.search.TotalHits;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetIndexResponse;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.ScoreSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import com.alibaba.fastjson.JSON;
|