Java开发ElasticSearch笔记|Java开发|码途山海.智隐长卷 -

程序人生|重庆纽新

找回密码
立即注册

QQ登录

只需一步,快速开始

欢迎访问【程序人生-重庆纽新】,本网站为软件开发人员视觉的IT资讯、软件开发中各种问题的解决办法!!
搜索
发新帖


2308

积分

0

好友

259

主题
楼主
发表于 2017-10-15 23:39:20 | 查看: 1831| 回复: 0
一、maven配置:
  1. <dependency>
  2.        <groupId>org.elasticsearch.client</groupId>
  3.        <artifactId>transport</artifactId>
  4.        <version>5.6.3</version>
  5. </dependency>        
  6.         
复制代码

                <dependency>
                        <groupId>log4j</groupId>
                        <artifactId>apache-log4j-extras</artifactId>
                        <version>1.2.17</version>
                </dependency>

二、获取连接
@Configuration
public class MyConfig {

        @Bean
        TransportClient client() throws UnknownHostException{
                InetSocketTransportAddress node=new InetSocketTransportAddress(
                                Inet4Address.getByName("localhost"),
                                9300
                        );
                Settings settings=Settings.builder()
                                .put("cluster.name","liuzhengguo")
                                .build();
               
                TransportClient client=new PreBuiltTransportClient(settings);
                client.addTransportAddress(node);
                return client;
        }

}

三、CRUD操作

        /**
         * 根据ID获取数据
         */
        public String browse(){
                GetResponse result = this.client.prepareGet("people", "man", ""+id).get();
               
                if (result.isExists()){
                        String s= Json.encode(result.getSource());
                        JSONObject json=new JSONObject(result.getSource());
                        s=json.toString();
                        setContent(s);
                }else{
                        setContent("没找到数据");
                }
                return "content";
        }
        
        /**
         * 增加数据
         */
        public String add(){
                try {
                        XContentBuilder content=XContentFactory.jsonBuilder()
                        .startObject()
                        .field("name",name)
                        .field("age",age)
                        .field("date",date)
                        .field("country",country)
                        .endObject();
                        
                        IndexResponse result=this.client.prepareIndex("people", "man")
                        .setSource(content).get();
                        String s=result.getId();
                        setContent(s);
                        
                } catch (IOException e) {
                        e.printStackTrace();
                        setContent("内部错误");
                }
                return "content";
        }
        
        /**
         * 根据ID删除数据
         * @return
         */
        public String delete(){
                //框架提供的ID的数字类型,因此需要重新获取id
                String idstr=request.getParameter("id");
                DeleteResponse result = this.client.prepareDelete("people","man",idstr).get();
                String s=result.getResult().toString();
                setContent(s);
                return "content";
        }

        /**
         * 根据ID修改数据
         * @return
         */
        public String update(){
                String idstr=request.getParameter("id");
                UpdateRequest update= new UpdateRequest("people", "man", idstr);
                try {
                        XContentBuilder content=XContentFactory.jsonBuilder().startObject();
                        if (date!=null){
                                content.field("date",date);
                        }
                        if (name!=null){
                                content.field("name",name);
                        }
                        if (age!=null){
                                content.field("age",age);
                        }
                        if (country!=null){
                                content.field("country",country);
                        }
                        content.endObject();
                        update.doc(content);
                        
                        UpdateResponse result = this.client.update(update).get();
                        setContent(result.getResult().toString());
                        
                } catch (IOException e) {
                        e.printStackTrace();
                        setContent("内部错误");
                } catch (InterruptedException e) {
                        e.printStackTrace();
                        setContent(e.getMessage());
                } catch (ExecutionException e) {
                        e.printStackTrace();
                        setContent(e.getMessage());
                }
                return "content";
        }
        
        /**
         * 根据name,country,lt_age,gt_age查询数据
         * @return
         */
        public String query(){
                BoolQueryBuilder boolQuery=QueryBuilders.boolQuery();
                if (name!=null){
                        boolQuery.must(QueryBuilders.matchQuery("name", name));
                }
                if (country!=null){
                        boolQuery.must(QueryBuilders.matchQuery("country", country));
                }
                RangeQueryBuilder rangeQuery=QueryBuilders.rangeQuery("age");
                rangeQuery.from(gt_age==null?0:gt_age);
                if (lt_age!=null && lt_age>0){
                        rangeQuery.to(lt_age);
                }
                boolQuery.filter(rangeQuery);
               
                SearchRequestBuilder builder = this.client.prepareSearch("people")
                .setTypes("man")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                .setQuery(boolQuery)
                .setFrom(0)
                .setSize(100);
                //可查看请求体的格式
                System.out.println(builder);
               
                SearchResponse response = builder.get();
                List<Map<String,Object>> result=new ArrayList<Map<String,Object>>();
                for(SearchHit hit:response.getHits()){
                        result.add(hit.getSource());
                }
                JSONArray jsonArr=new JSONArray(result);
                setContent(jsonArr.toString());
                return "content";
        }




收藏回复 只看该作者 道具 举报

高级模式
B Color Image Link Quote Code Smilies



QQ|小黑屋| 码途山海.智隐长卷 渝ICP备15002301号-2   渝公网安备50011202504426

GMT+8, 2025-5-18 00:50 , Processed in 0.042037 second(s), 23 queries .

©Copyright 程序人生!

©2012-2015重庆纽新

快速回复 返回顶部 返回列表