# SpringBoot Configure ElasticSearch7.4.0 java package Post using Elasticsearch's sql plugin

SpringBoot configure ElasticSearch7.4.0 java package Post using Elasticsearch's sql plugin

Es configuration

Introduce dependencies
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.4.0</version>
</dependency>
Configuration class
@Configuration
public class BaseElasticConfig {
    
    

    private Logger logger= LoggerFactory.getLogger(BaseElasticConfig.class);

    @Bean
    public RestHighLevelClient esRestClient(){
    
    
        logger.info("Es初始化开始==========");
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        //在这里配置你的elasticsearch的情况
                        new HttpHost("127.0.0.1", 9200, "http")
                )
        );
        logger.info("Es初始化结束==========");
        return client;
    }
}

Es operation

New index: an error will be reported when the index exists
@RequestMapping("/createindex")
public ResponseInfo createIndex() {
    
    
    try {
    
    
        CreateIndexRequest createIndexRequest = new CreateIndexRequest("test");
        CreateIndexResponse createIndexResponse=client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        return null;
    }catch (Exception e){
    
    
        e.printStackTrace();
        return null;
    }
}
Determine whether the index exists
@RequestMapping("/exist")
public boolean testExistIndex() throws IOException {
    
    
	GetIndexRequest request = new GetIndexRequest("test");
	boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
	return exists;
}

Encapsulate Post request and use Sql plugin to query results

Use java to simulate sending the following Post request, using the sql plugin

Insert picture description here

Using this method, the query results are as follows: get Columns and Rows

Insert picture description here

Java package Post request to simulate sending Post request
/**
 * 封装Post查询Es中的结果
 */
public  String getEsResultBysql( String sql) {
    
    
    PrintWriter out = null;
    BufferedReader in = null;
    String result = "";
    try {
    
    
        // 请求的Url
        String url_location = "http://127.0.0.1:9200/_sql";
        // 请求体
        String content = "{\"query\":\"" + sql + "\"}";
        URL realUrl = new URL(url_location);
        // 打开和URL之间的连接
        URLConnection conn = realUrl.openConnection();
        // 设置通用的请求属性
        conn.setRequestProperty("accept", "*/*");
        conn.setRequestProperty("connection", "Keep-Alive");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        // 发送POST请求必须设置如下两行
        conn.setDoOutput(true);
        conn.setDoInput(true);
        ((HttpURLConnection) conn).setRequestMethod("POST");
        // 获取URLConnection对象对应的输出流
        out = new PrintWriter(conn.getOutputStream());
        // 发送请求参数
        out.print(content);
        // flush输出流的缓冲
        out.flush();
        // 定义BufferedReader输入流来读取URL的响应
        in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = in.readLine()) != null) {
    
    
            result += line;
        }
    } catch (Exception e) {
    
    
        System.out.println("发送 POST 请求出现异常!"+e);
        e.printStackTrace();
    }
    //使用finally块来关闭输出流、输入流
    finally{
    
    
        try{
    
    
            if(out!=null){
    
    
                out.close();
            }
            if(in!=null){
    
    
                in.close();
            }
        }
        catch(IOException ex){
    
    
            ex.printStackTrace();
        }
    }
    return result;
}

You can write sql for Es query, very Nice

Guess you like

Origin blog.csdn.net/qq_37248504/article/details/108247875