springboot+es

springboot-es

本文 :Elasticsearch 与 sprigboot 的结合,springboot 操作es
关于es 的介绍和初识 可以看 https://blog.csdn.net/u012373815/article/details/50460248
安装
https://blog.csdn.net/u012373815/article/details/50463792

配置依赖

新建springboot项目 配置pom.xml 文件

   <dependency>
            <groupId>com.sun.jna</groupId>
            <artifactId>jna</artifactId>
            <version>3.0.9</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>rest</artifactId>
            <version>5.5.3</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.40</version>
        </dependency>

新建配置文件ESRestClientConfig

配置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.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author yyb
 * @time 2019/4/2
 */
@Configuration
public class ESRestClientConfig {
    @Value("${elasticsearch.userName}")
    private String userName;
    @Value("${elasticsearch.password}")
    private String password;
    @Value("${elasticsearch.rest.hostNames}")
    private String hostName;
    @Value("${elasticsearch.rest.port}")
    private Integer port;

    @Bean(destroyMethod = "close")
    public RestClient getRestClient() {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials(userName, password));
        RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(hostName, port));
        //配置身份验证
        restClientBuilder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        });
        return restClientBuilder.build();
    }
}

在application.properties 文件中配置es 的链接

#es服务器地址配置
elasticsearch.userName=
elasticsearch.password=
elasticsearch.rest.hostNames=127.0.0.1
elasticsearch.rest.port=9200

使用es rest API 操作es

拼接查询query

首先要拼接 es 查询使用的 query

{
  "query": { 
  		"item": {
  			"userId": {
  				"value":"xxx"
  						}
  			 	}
  		  }
}

我在常量类中拼接

/**
 * @author yyb
 * @time 2019/4/3
 */
public class Constants {

    /**
     * es 查询query 拼接 前缀
     */
    public static final String ES_QUERY_JSON_PREFIX = "{\n" +
            "  \"query\": {\n" +
            "    \"term\": {\n" +
            "      \"userId\": {\n" +
            "        \"value\": \"";
    /**
     * es 查询query 拼接后缀
     */
    public static final String ES_QUERY_JSON_SUFFIX = "\"\n" +
            "      }\n" +
            "    }\n" +
            "  }\n" +
            "}\n";

 	/**
     * 需要查询的es的 index
     */
    public static final String ES_INDEX_PATH = "/logstash_indes/_search";

使用

在service 中使用 responseJson 为从es 中查询出来的结果。从json 中提取自己需要的信息

public User getById(Integer id) throws Exception {
        //拼接es 的查询query
        String json = Constants.ES_QUERY_JSON_PREFIX + id + Constants.ES_QUERY_JSON_SUFFIX;
        HttpEntity entry = new NStringEntity(json, ContentType.APPLICATION_JSON);
        Response response = restClient.performRequest(HttpGet.METHOD_NAME, Constants.ES_INDEX_PATH, Collections.emptyMap(), entry);
        JSONObject responseJson = JSONObject.parseObject(EntityUtils.toString(response.getEntity()));
        //es 中查询的结果
        System.out.println(responseJson);
        return userDao.getById(id);
    }

本文完整源代码:https://github.com/527515025/springBoot/tree/master/springboot-elasticsearch

发布了343 篇原创文章 · 获赞 649 · 访问量 231万+

猜你喜欢

转载自blog.csdn.net/u012373815/article/details/89296320