zoukankan      html  css  js  c++  java
  • java连接elasticsearch:查询、添加数据

    导入jar包

            <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport -->
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
            </dependency>

    初始化TransportClient对象

        /**
         *  初始化TransportClient对象, 这里只配置了单个节点,例如100.100.0.1:8090
         */
        private TransportClient initClient() throws UnknownHostException {
            String node = esSetting.getClusterNodes();
            int index = node.indexOf(":");
            String host = node.substring(0, index);
            int port = Integer.valueOf(node.substring(index + 1));
            
            Settings settings = Settings.builder()
                    //elasticsearch节点名称
                    .put("cluster.name", esSetting.getClusterName())
                    .put("client.transport.sniff", true).build();
            
            InetAddress address = InetAddress.getByName(host);
            TransportClient client = new PreBuiltTransportClient(settings);
            client.addTransportAddress(new InetSocketTransportAddress(address, port));
            
            return client;
        }

    查询:

            //查询,根据数据中date字段查询, 这里是最常用的boolQuery示例,可以通过must、must_not、filter等方法设定查询条件
            QueryBuilder queryBuilder = QueryBuilders.boolQuery()
                    .must(QueryBuilders.rangeQuery("date").gte("2018-11-08T00:00:00.000Z")
                            .lt("2018-11-09T00:00:00.000Z"));
            
            //elasticsearch索引及类型,对应数据库中数据库和表
            String index = "index";
            String type = "type";
            SearchResponse response = client.prepareSearch(index)
                    .setTypes(type).addSort("date", SortOrder.ASC)
                    .setSize(1000).setQuery(queryBuilder).execute()
                    .actionGet();
            
            long total = response.getHits().getTotalHits();

    写入:

            try {
                XContentBuilder builder = XContentFactory.jsonBuilder()
                        .startObject().field("date", "2018-11-08T00:00:00.000Z")
                        .field("cost", 10);
                builder.endObject();
                IndexResponse response = client
                        .prepareIndex(index, type)
                        .setSource(builder).get();
            } catch (Exception e) {
                e.printStackTrace();
            }
  • 相关阅读:
    oracle的nvl函数的用法
    简单实用的MD5加密算法
    oracle触发器使用笔记
    Html学习
    连接字符串
    oracle触发器使用笔记2
    oracle中如何给有空值的数据排序
    Zend Frame 添加Smarty模板引擎
    HDU 2464 A Pair of Graph
    POJ 1466 Girls and Boys
  • 原文地址:https://www.cnblogs.com/wushengwuxi/p/10072255.html
Copyright © 2011-2022 走看看