赞
踩
1 添加pom.xml依赖
- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>elasticsearch-rest-high-level-client</artifactId>
- <version>6.3.2</version>
- </dependency>
2 Es Client配置
- package com.elasticsearch.config;
-
- import org.apache.http.HttpHost;
- import org.elasticsearch.client.RestClient;
- import org.elasticsearch.client.RestHighLevelClient;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- public class EsClientConfig {
-
- @Value("${esServer.hostname}")
- private String hostName;
- @Value("${esServer.port}")
- private String esPort;
-
- @Bean
- public RestHighLevelClient client() {
- int port = Integer.parseInt(esPort);
- RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost(hostName, port, "http"))
- );
- return restHighLevelClient;
- }
- }
-

3 对ES进行增删改操作
- package es;
-
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
-
- import org.apache.http.HttpHost;
- import org.elasticsearch.action.bulk.BulkRequest;
- import org.elasticsearch.action.delete.DeleteRequest;
- 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.update.UpdateRequest;
- import org.elasticsearch.client.RestClient;
- import org.elasticsearch.client.RestHighLevelClient;
- import org.elasticsearch.common.unit.Fuzziness;
- 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.QueryBuilder;
- import org.elasticsearch.index.query.QueryBuilders;
- import org.elasticsearch.index.query.RangeQueryBuilder;
- import org.elasticsearch.index.query.TermQueryBuilder;
- import org.elasticsearch.rest.RestStatus;
- import org.elasticsearch.search.SearchHit;
- import org.elasticsearch.search.SearchHits;
- import org.elasticsearch.search.builder.SearchSourceBuilder;
- import org.elasticsearch.search.sort.ScoreSortBuilder;
- import org.elasticsearch.search.sort.SortOrder;
- import org.junit.Test;
-
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
-
- public class EsDemo {
- private String hostName = "IP";
- private int esPort = 9300;
- private String index = "demo";
- private String type = "demo";
-
- RestHighLevelClient client;
- {
- // 指定ES集群
- // Settings setting = Settings.builder().put("cluster.name",
- // "my-application").build();
-
- // 创建访问ES服务器的客户端
- client = new RestHighLevelClient(RestClient.builder(new HttpHost(hostName, esPort, "http")));
- }
-
- @Test
- public void addTest() {
- IndexRequest indexRequest = new IndexRequest(index, type);
- News news = new News();
- news.setTitle("中国产小型无人机的“对手”来了,俄微型拦截导弹便宜量又多");
- news.setTag("军事");
- news.setPublishTime("2018-01-24T23:59:30Z");
- String source = JSON.toJSONString(news);
- indexRequest.source(source, XContentType.JSON);
- try {
- IndexResponse response = client.index(indexRequest);
- System.out.println(response.getId());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void queryTest(){
- SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
- sourceBuilder.from(0);
- sourceBuilder.size(10);
- sourceBuilder.fetchSource(new String[]{"title","tag"}, new String[]{});
- MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", "费德勒");
- TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("tag", "军事新闻");
- RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("publishTime");
- rangeQueryBuilder.gte("2018-01-23T08:00:00Z");
- rangeQueryBuilder.lte("2018-01-26T20:00:00Z");
- BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
- // boolBuilder.must(matchQueryBuilder);
- boolBuilder.must(termQueryBuilder);
- boolBuilder.must(rangeQueryBuilder);
- sourceBuilder.query(boolBuilder);
- SearchRequest searchRequest = new SearchRequest(index);
- searchRequest.types(type);
- searchRequest.source(sourceBuilder);
- try {
- SearchResponse response = client.search(searchRequest);
- System.out.println(response);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Test
- public void queryTest2(){
- SearchRequest request = new SearchRequest(index);
- request.types(type);
- SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
-
- QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("tag", "军事")
- .fuzziness(Fuzziness.AUTO)
- .prefixLength(3)//Set the prefix length option on the match query
- .maxExpansions(5);//Set the max expansion options to control the fuzzy process of the query
- sourceBuilder.query(matchQueryBuilder);
- sourceBuilder.from(0);
- sourceBuilder.size(10);
- sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));
- request.source(sourceBuilder);
- try {
- SearchResponse response = client.search(request);
- RestStatus status = response.status();
- SearchHits hits = response.getHits();
- long rst = hits.getTotalHits();
-
- List array = new ArrayList();
- for (SearchHit hit:hits) {
- Map tempSource = hit.getSourceAsMap();
- tempSource.remove("@timestamp");
- tempSource.remove("@version");
- array.add(tempSource);
- }
-
- JSONObject responseData = new JSONObject();
- responseData.put("companies",array);
-
- } catch (IOException e) {
- }
- }
- @Test
- public void updateTest(){
- String id ="-RXNkWsBmdTwxR2cLTLQ";
- UpdateRequest updateRequest = new UpdateRequest(index, type, id);
- Map<String, String> map = new HashMap<>();
- map.put("tag", "军事新闻");
- updateRequest.doc(map);
- try {
- client.update(updateRequest);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void delete() {
- try {
- SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
- sourceBuilder.timeout(new TimeValue(2, TimeUnit.SECONDS));
- String deleteText = "test1";
- TermQueryBuilder termQueryBuilder1 = QueryBuilders.termQuery("content.keyword", deleteText);
- sourceBuilder.query(termQueryBuilder1);
- SearchRequest searchRequest = new SearchRequest(index);
- searchRequest.types(type);
- searchRequest.source(sourceBuilder);
- SearchResponse response = client.search(searchRequest);
- SearchHits hits = response.getHits();
- List<String> docIds = new ArrayList<>(hits.getHits().length);
- for (SearchHit hit : hits) {
- docIds.add(hit.getId());
- }
-
- BulkRequest bulkRequest = new BulkRequest();
- for (String id : docIds) {
- DeleteRequest deleteRequest = new DeleteRequest(index, type, id);
- bulkRequest.add(deleteRequest);
- }
- client.bulk(bulkRequest);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。