Elasticsearch Java API (三):搜索

 Elasticsearch Java API (三):搜索

 基本的条件查询是这样的

  QueryBuilder qb = termQuery("name",  "2");
        SearchResponse response = client.getClient().prepareSearch("gxk")
                .setQuery(qb).setSize(100).execute().actionGet();
        SearchHits hits = response.getHits();
        System.out.println("\n成功匹配到"+hits.getTotalHits()+"条结果!\n");
        if (hits.totalHits() > 0)
                for (SearchHit hit : hits)    System.out.println("搜索结果:/"+hit.getIndex()+"/"+hit.getType()+"/"+hit.getSourceAsString());

 

这里的client是(一)中定义的MyClient gxk是索引名称 setsize不用的话默认输出10条结果  name和2意思是查找name字段为2的

待续。。。

 /***
     * bulk方式快速录入数据
     *
     * @param client 连接客户端
     * @param jsonBuilder 构造json数据->创建XContentBuilder x=jsonBuilder().startObject....
     * @param index  在索引中创建数据
     * @param type 在类型中创建数据
     * @throws InterruptedException
     * @throws IOException
     */
    public static void insertDocs(MyClient client, XContentBuilder jsonBuilder, String index, String type) throws InterruptedException, IOException {
        BulkProcessor bulkProcessor = ElasticUtils.getBulkProcess(client);
        long begin = System.currentTimeMillis();
        Integer count = 1;
        for (int i = 1; i <= count; i++) {
            bulkProcessor.add(new IndexRequest(index, type, UUID.randomUUID().toString()).source(jsonBuilder));
            System.out.println("耗时:" + (System.currentTimeMillis() - begin) / 1000 + "秒   完成 " + 100 * 1.0 * i / count + "%");
        }
        ElasticUtils.closeBulkProcessor(bulkProcessor);
    }

 

posted @ 2017-03-31 19:43  forgeeks  阅读(1013)  评论(0)    收藏  举报