java 操作es api

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: java 操作es api

1.pom

 

org.elasticsearch.client
    elasticsearch-rest-high-level-client
    6.3.1

2.es 操作类

package com.vince.xq.common;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.entity.ContentType;
import org.apache.http.nio.entity.NStringEntity;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.transport.TransportClient;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Collections;
import java.util.Map;
/**
 * @author
 * @Date 2019-11-13 15:56
 **/
public class EsClient {
    private static volatile RestClient client;
    private EsClient() {
    }
    public static RestClient getInstance(String url, int port) throws UnknownHostException {
        if (client == null) {
            synchronized (EsClient.class) {
                if (client == null) {
                    client = RestClient
                            .builder(new HttpHost(url, port, "http"))
                            .build();
                    return client;
                }
            }
        }
        return client;
    }
    public static JSONObject getSource(RestClient client, String queryStr, String index, String type) throws IOException {
        Map params = Collections.emptyMap();
        HttpEntity entity = new NStringEntity(queryStr, ContentType.APPLICATION_JSON);
        String search = "/" + index + "/" + type + "/_search";
        Response response = client.performRequest("GET", search, params, entity);
        String responseBody = null;
        responseBody = EntityUtils.toString(response.getEntity());
        System.out.println(response.getStatusLine().getStatusCode());
        if (response.getStatusLine().getStatusCode() == 200) {
            JSONObject jsonObject = JSONObject.parseObject(responseBody);
            JSONObject object = JSONObject.parseObject(jsonObject.get("hits").toString());
            System.out.println(object.getString("hits"));
            JSONArray jsonArray = JSONObject.parseArray(object.getString("hits"));
            if (jsonArray.size() == 0) {
                System.out.println("null");
                return null;
            }
            JSONObject source = JSONObject.parseObject(JSONObject.parseObject(jsonArray.get(0).toString()).getString("_source"));
            return source;
        } else {
            return null;
        }
    }
}


3.调用

String queryString = "{\"query\":{\"match\":{\"id\":\"" + userId + "\"}}}";
JSONObject userObject = EsClient.getSource(client, queryString, "sys_user_test", "user");


相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2天前
|
Java API 开发者
RESTful API设计与实现:Java开发者指南
RESTful API设计与实现:Java开发者指南
|
2天前
|
Java 测试技术 API
Java详解 : API常用类
Java详解 : API常用类
|
4天前
|
存储 安全 Java
掌握Java Streams API的使用技巧
掌握Java Streams API的使用技巧
|
18小时前
|
缓存 Java API
Java中设计和优化REST API的技巧
Java中设计和优化REST API的技巧
|
22小时前
|
监控 搜索推荐 Java
​邮件群发API,AOKSend关于Java示例代码
AOKSend邮件群发API简化了企业邮件自动化,提高效率,支持个性化内容和实时分析。其优势在于易于集成、高可靠性、丰富功能和详细统计。Java开发者可快速添加依赖,配置API密钥,使用示例代码发送邮件。通过AOKSend,企业能优化邮件策略,提升邮件营销效果。
|
1天前
|
Java API 开发者
RESTful API设计与实现:Java开发者指南
RESTful API设计与实现:Java开发者指南
|
1天前
|
Java API UED
Java异步API设计与实现
Java异步API设计与实现
|
1天前
|
负载均衡 Java API
Java微服务架构中的API网关设计与实现
Java微服务架构中的API网关设计与实现
|
2天前
|
Java API 开发者
Java中不同I/O操作的性能比较
Java中不同I/O操作的性能比较
|
2天前
|
Kubernetes Java 应用服务中间件
Kubernetes 上搭建一个 Nginx 的 Pod,并确保传入的 API 请求被均匀地分发到两个 Java 业务 Pod 上
Kubernetes 上搭建一个 Nginx 的 Pod,并确保传入的 API 请求被均匀地分发到两个 Java 业务 Pod 上
5 0