zoukankan      html  css  js  c++  java
  • Elasticsearch的JavaAPI

    获取客户端对象

    public class App {
    
        private TransportClient client;
    
        //获取客户端对象
        @Before
        public void getClinet() throws UnknownHostException {
            Settings settings = Settings.builder().put("cluster.name", "my-application").build();
    
            //获得客户端对象
            client = new PreBuiltTransportClient(settings);
    
            client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.11"), 9300));
            System.out.println(client.toString());
    
        }
    

     ## 创建索引

    //创建索引
    @Test
    public void createIndex() {
        client.admin().indices().prepareCreate("blog1").get();
        client.close();
    }
    
    //删除索引
    @Test
    public void deleteIndex() {
        client.admin().indices().prepareDelete("blog").get();
        client.close();
    }
    

     新建文档

    //新建文档
    @Test
    public void createIndexByJson() {
        //创建文档内容
    
        String json = "{" + ""id":"1"," + ""title":"基于Lucene的搜索服务器","
                + ""content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口"" + "}";
    
        //创建
        IndexResponse response = client.prepareIndex("blog", "article", "1").setSource(json).execute().actionGet();
        //打印返回值
        System.out.println("索引" + response.getIndex());
        System.out.println("类型" + response.getType());
        System.out.println("id" + response.getId());
        System.out.println("结果" + response.getResult());
        client.close();
    }
    
    //创建文档以hashmap
    @Test
    public void createIndexBymap() {
        HashMap<String, Object> json = new HashMap<String, Object>();
    
        json.put("id", "2");
        json.put("title", "hph");
        json.put("content", "博客 hph.blog");
        IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet();
        //打印返回值
        System.out.println("索引" + response.getIndex());
        System.out.println("类型" + response.getType());
        System.out.println("id" + response.getId());
        System.out.println("结果" + response.getResult());
        client.close();
    }
    //创建文档以hashmap
        @Test
        public void createIndexBymap() {
            HashMap<String, Object> json = new HashMap<String, Object>();
    
            json.put("id", "2");
            json.put("title", "hph");
            json.put("content", "博客 hph.blog");
            IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet();
            //打印返回值
            System.out.println("索引" + response.getIndex());
            System.out.println("类型" + response.getType());
            System.out.println("id" + response.getId());
            System.out.println("结果" + response.getResult());
            client.close();
    
        }
    
        //创建文档已bulder
        @Test
        public void createIndexbyBulider() throws IOException {
            XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("id", "4").field("title", "博客").field("content", "hphblog.cn").endObject();
            IndexResponse response = client.prepareIndex("blog", "article", "3").setSource(builder).execute().actionGet();
            //打印返回值
            System.out.println("索引" + response.getIndex());
            System.out.println("类型" + response.getType());
            System.out.println("id" + response.getId());
            System.out.println("结果" + response.getResult());
            client.close();
        }
    

     查询索引

    //单个索引查询
    @Test
    public void queryIndex() {
        //查询
        GetResponse response = client.prepareGet("blog", "article", "2").get();
    
        //打印
        System.out.println(response.getSourceAsString());
    
        //关闭资源
        client.close();
    
    }
    
    //多个索引查询
    @Test
    public void queryMultiIndex() {
    
        //查询
        MultiGetResponse response = client.prepareMultiGet().add("blog", "article", "3")
                .add("blog", "article", "1")
                .add("blog", "article", "2").get();
    
        for (MultiGetItemResponse multiGetItemResponse : response) {
            GetResponse response1 = multiGetItemResponse.getResponse();
    
            //判断是否存在
            if (response1.isExists()) {
                System.out.println(response1.getSourceAsString());
            }
        }
    }
    
    //更改数据
    @Test
    public void update() throws ExecutionException, InterruptedException, IOException {
        UpdateRequest updateRequest = new UpdateRequest("blog", "article", "2");
        updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "2")
                .field("title", "hphblog").field("content", "大数据博客学习技术分享").endObject()
        );
    
        UpdateResponse response = client.update(updateRequest).get();
    
        //打印返回值
        System.out.println("索引" + response.getIndex());
        System.out.println("类型" + response.getType());
        System.out.println("id" + response.getId());
        System.out.println("结果" + response.getResult());
        client.close();
    
    }
    

     更新文档

    //更新文档updaset
    @Test
    public void upsert() throws IOException, ExecutionException, InterruptedException {
        //没有就创建
        IndexRequest indexRequest = new IndexRequest("blog", "article", "5");
        indexRequest.source(XContentFactory.jsonBuilder().startObject().field("id", "5")
                .field("title", "大数据技术分享的学习").field("content", "大数据技术的分享与学习希望和大家多多交流").endObject
                        ());
        //有文档内容就更新
        UpdateRequest updateRequest = new UpdateRequest("blog", "article", "5");
        updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "5")
                .field("title", "hphblog").field("content", "技术分享、技术交流、技术学习").endObject()
        );
    
        updateRequest.upsert(indexRequest);
    
        UpdateResponse response = client.update(updateRequest).get();
    
        //打印返回值
        System.out.println("索引" + response.getIndex());
        System.out.println("类型" + response.getType());
        System.out.println("id" + response.getId());
        System.out.println("结果" + response.getResult());
        client.close();
    
    
    }
    

     删除文档

    //删除文档
    @Test
    public void delete() {
        client.prepareDelete("blog", "article", "5").get();
        client.close();
    
    }
    

     查询所有

    //查询所有
    @Test
    public void matchAllquery() {
        //1.执行查询
        SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.matchAllQuery()).get();
    
        SearchHits hits = response.getHits();
    
        System.out.println("查询的结果为" + hits.getTotalHits());
    
        Iterator<SearchHit> iterator = hits.iterator();
        while (iterator.hasNext()) {
            SearchHit next = iterator.next();
            System.out.println(next.getSourceAsString());
        }
    
        client.close();
    }
    
    //分词查询
    @Test
    public void query() {
        //1.执行查询
        SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.queryStringQuery("学习全文")).get();
    
        SearchHits hits = response.getHits();
    
        System.out.println("查询的结果为" + hits.getTotalHits());
    
        Iterator<SearchHit> iterator = hits.iterator();
        while (iterator.hasNext()) {
            SearchHit next = iterator.next();
            System.out.println(next.getSourceAsString());
        }
    
        client.close();
    }
    

     通配符查询

    //通配符查询
    @Test
    public void wildcardQuery() {
        //1.执行查询
        SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.wildcardQuery("content", "分")).get();
    
        SearchHits hits = response.getHits();
    
        System.out.println("查询的结果为" + hits.getTotalHits());
    
        Iterator<SearchHit> iterator = hits.iterator();
        while (iterator.hasNext()) {
            SearchHit next = iterator.next();
            System.out.println(next.getSourceAsString());
        }
    
        client.close();
    }
    

     模糊查询

    //模糊查询
    @Test
    public void fuzzyQuery() {
        //1.执行查询
        SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.fuzzyQuery("title", "LuceNe")).get();
    
        SearchHits hits = response.getHits();
    
        System.out.println("查询的结果为" + hits.getTotalHits());
    
        Iterator<SearchHit> iterator = hits.iterator();
        while (iterator.hasNext()) {
            SearchHit next = iterator.next();
            System.out.println(next.getSourceAsString());
        }
    
        client.close();
    }
    
    //映射相关的操作
    @Test
    public void createMapping() throws Exception {
    
        // 1设置mapping
        XContentBuilder builder = XContentFactory.jsonBuilder()
                .startObject()
                .startObject("article")
                .startObject("properties")
                .startObject("id1")
                .field("type", "string")
                .field("store", "yes")
                .endObject()
                .startObject("title2")
                .field("type", "string")
                .field("store", "no")
                .endObject()
                .startObject("content")
                .field("type", "string")
                .field("store", "yes")
                .endObject()
                .endObject()
                .endObject()
                .endObject();
    

     添加mapping

    // 2 添加mapping
        PutMappingRequest mapping = Requests.putMappingRequest("blog1").type("article").source(builder);
    
        client.admin().indices().putMapping(mapping).get();
    
        // 3 关闭资源
        client.close();
    }
    

     原文:http://hphblog.cn/2018/12/16/Elasticsearch%E7%9A%84JavaAPI/

  • 相关阅读:
    Jsp 中文乱码,解决
    dojox.grid.EnhancedGrid 和 dojox.grid.DataGrid 的继承关系
    使用 Maven 部署 artifact 到 Nexus 教程
    [LeetCode] 187. Repeated DNA Sequences 解题思路
    [LeetCode] 204. Count Primes 解题思路
    [LeetCode] 219. Contains Duplicate II 解题思路
    [LeetCode] 310. Minimum Height Trees 解题思路
    [LeetCode] 200. Number of Islands 解题思路
    PHP7添加mysqli扩展
    MySQL中的锁(表锁、行锁)
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/10410298.html
Copyright © 2011-2022 走看看