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; } }

浙公网安备 33010602011771号