当前位置:   article > 正文

java使用es_java 使用es

java 使用es
//创建连接工具类
public class ESClientConnectionUtil {
    public static TransportClient client=null;
    public final static String HOST = "192.168.200.211"; //服务器部署
    public final static Integer PORT = 9301; //端口
    public static TransportClient  getESClientConnection(){
    if (client == null) {
            System.setProperty("es.set.netty.runtime.available.processors", "false");
            try {
                //设置集群名称
                Settings settings = Settings.builder().put("cluster.name", "es5").put("client.transport.sniff",                   true).build();
                //创建client
                client = new PreBuiltTransportClient(settings).addTransportAddress(new                        InetSocketTransportAddress(InetAddress.getByName(HOST), PORT));
            } catch (Exception ex) {
                ex.printStackTrace();
                System.out.println(ex.getMessage());
        }
    }
    return client;
}
}

 用Java命令向elasticsearch中插入数据

public Map<String,Object> addTopic(KnowledgeTopicDTO knowledgeTopicDTO){
    Map<String,Object> map = new HashMap<>();
 //连接ES
    TransportClient transportClient =  ESClientConnectionUtil.getESClientConnection();
    JSONObject json = JSONObject.fromObject(knowledgeTopicDTO);//后台传过来的对象数据转换成json格式
    try{
        //index 索引名称(相当于数据库) type :类型(相当于数据库中的表)
        IndexResponse response = transportClient.prepareIndex("knowledge", "knowledge_theme").setSource(json, XContentType.JSON).get();
        if(null !=response.getId()){
            map.put("code",200);
            return map;
        }
    }catch (Exception e){
        e.printStackTrace();
        map.put("code",500);
        return map;
    }
    return null;
}

 

使用Java根据id查询数据

public Map<String,Object> addTopic(KnowledgeTopicDTO knowledgeTopicDTO){

 TransportClient transportClient =  ESClientConnectionUtil.getESClientConnection();
//参数:索引名,类型(type) id
GetResponse response = client.prepareGet("knowledge", "knowledge_theme", "1")
        .setOperationThreaded(false)    // 线程安全
        .get();
JSONObject obj = new JSONObject().fromObject(response.getSourceAsString());//将json字符串转换为json对象
InformationDTO information = (InformationDTO) JSONObject.toBean(obj, InformationDTO.class);//将json数据转换成InformationDTO实体对象
String codes =response.getId();//获取_id
}

 

根据id进行修改数据(传入对象)

//knowledgeTopic为修改数据的对象
//修改状态后的对象转换成json数据
JSONObject fromObject= JSONObject.fromObject(knowledgeTopic);
//参数:索引名,类型(type) id(指的是_id) 要修改的json数据:fromObject
UpdateResponse updateResponse = client.prepareUpdate("knowledge", "knowledge_theme", "1")
     .setDoc(fromObject).get();

 

根据id修改数据(针对单个字段修改)

XContentBuilder source = null;

     try {

         source = XContentFactory.jsonBuilder()

                 .startObject()

                 .field("browseNum", num) //browseNum:要修改的字段名,num 修改的值

                 .endObject();

     catch (IOException e) {

         e.printStackTrace();

     }//client:ES连接  codes为文档的_id

     UpdateResponse updateResponse = client.prepareUpdate("article""up_information", codes).setDoc(source).get();

 

ES模糊查询

SearchResponse searchResponse=null;
//连接elasticsearch
TransportClient transportClient =  ESClientConnectionUtil.getESClientConnection();
searchResponse = client.prepareSearch()
                    .setIndices("knowledge")
                    .setTypes("knowledge_theme")
                     .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                    .setScroll(TimeValue.timeValueMinutes(30)) //游标维持时间
                    .setSize(2 * 5)//实际返回的数量为10*index的主分片数
                     .setQuery(QueryBuilders.wildcardQuery("name", ("*"+name+"*").toLowerCase()))  //查询的字段名及值
                    .execute()
                    .actionGet();
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/68326
推荐阅读
相关标签
  

闽ICP备14008679号