Elasticsearch标签管理

添加maven依赖

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>6.8.5</version>
</dependency>
    <dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>6.8.5</version>
</dependency>
<dependency>
     <groupId>org.elasticsearch</groupId>
     <artifactId>elasticsearch</artifactId>
     <version>6.8.5</version>
</dependency>

配置es

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

@Configuration
@EnableElasticsearchRepositories
public class Esconfig {

    @Bean
    public RestHighLevelClient getESClient() {
        //需要用户名和密码的认证
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("userName", "password"));
        RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
                        return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                });
        RestHighLevelClient client = new RestHighLevelClient(restClientBuilder);

        return client;
    }
}

操作es

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import law.entity.JdLabel;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
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.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;

@RestController
public class ESController {
    @Autowired
    @Qualifier("getESClient")
    private RestHighLevelClient client;

    @RequestMapping("/addLabel")
    public String addLabel() throws Exception {
        List<JdLabel> jdLabels = new ArrayList(2);
        JdLabel jdLabel1 = new JdLabel();
        List<JdLabel.Label> labels1 = new ArrayList();
        JdLabel.Label label1 = new JdLabel.Label();
        label1.setLabelk("k1");
        label1.setLabelv("aaa");
        labels1.add(label1);
        JdLabel.Label label2 = new JdLabel.Label();
        label2.setLabelk("k2");
        label2.setLabelv("bbb");
        labels1.add(label2);
        jdLabel1.setLabel(labels1);
        jdLabel1.setUserId("1");
        jdLabels.add(jdLabel1);

        JdLabel jdLabel2 = new JdLabel();
        List<JdLabel.Label> labels2 = new ArrayList();
        JdLabel.Label label3 = new JdLabel.Label();
        label3.setLabelk("k3");
        label3.setLabelv("ccc");
        labels2.add(label3);
        JdLabel.Label label4 = new JdLabel.Label();
        label4.setLabelk("k4");
        label4.setLabelv("ddd");
        labels2.add(label4);
        jdLabel2.setLabel(labels2);
        jdLabel2.setUserId("2");
        jdLabels.add(jdLabel2);

        IndexResponse response = null;
        for (int i = 0; i < jdLabels.size(); i++) {
            IndexRequest indexRequest = new IndexRequest();
            String jsonData = new ObjectMapper().writeValueAsString(jdLabels.get(i));
            indexRequest.index("people").type("_doc").source(jsonData, XContentType.JSON).id(jdLabels.get(i).getUserId());
            response = client.index(indexRequest, RequestOptions.DEFAULT);
        }

        return JSON.toJSONString(response);
    }

    @RequestMapping("/updateLabel")
    public String updateLabel() throws Exception {
        JdLabel jdLabel = new JdLabel();
        List<JdLabel.Label> labels = new ArrayList();
        JdLabel.Label label1 = new JdLabel.Label();
        label1.setLabelk("k1");
        label1.setLabelv("aaaa");
        labels.add(label1);
        JdLabel.Label label2 = new JdLabel.Label();
        label2.setLabelk("k2");
        label2.setLabelv("bbb");
        labels.add(label2);
        jdLabel.setLabel(labels);
        jdLabel.setUserId("1");

        UpdateRequest updateRequest = new UpdateRequest();
        String jsonData = new ObjectMapper().writeValueAsString(jdLabel);
        updateRequest.index("people").type("_doc").id(jdLabel.getUserId()).doc(jsonData, XContentType.JSON);
        UpdateResponse response = client.update(updateRequest, RequestOptions.DEFAULT);

        return JSON.toJSONString(response);

    }

    @RequestMapping("/selectLabel")
    public String selectLabel() throws Exception {
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("label.labelk", "k1");
        BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
        boolBuilder.must(matchQueryBuilder);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(boolBuilder);
        SearchRequest searchRequest = new SearchRequest("people");
        searchRequest.source(sourceBuilder);
        SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);

        return JSON.toJSONString(response);

    }

    @RequestMapping("/deleteLabel")
    public String deleteLabel() throws Exception {
        DeleteRequest deleteRequest = new DeleteRequest("people").type("_doc").id("1");
        DeleteResponse response = client.delete(deleteRequest, RequestOptions.DEFAULT);

        return JSON.toJSONString(response);
    }
}
import lombok.Data;
import java.io.Serializable;
import java.util.List;

@Data
public class JdLabel implements Serializable {
    private static final long serialVersionUID = -1205226416664488559L;

    private String userId;
    private List<Label> label;

    @Data
    public static class Label {
        private String labelk;
        private String labelv;
    }
}

 

posted @ 2020-09-23 16:14  你好。世界!  阅读(367)  评论(0)    收藏  举报