elasticsearch 5.5.0 java操作(新增索引、分页搜索)

来源:互联网 发布:淘宝商品名称 编辑:程序博客网 时间:2024/06/03 07:26

网上资源比较乱、比较杂,稍微总结一下,帮助大家避免像我一样走弯路…………

————————————————————————————————————

首先引入maven依赖

<!--elasticsearch-->        <dependency>            <groupId>org.elasticsearch.client</groupId>            <artifactId>transport</artifactId>            <version>5.5.0</version>        </dependency>


公共client:获取ES的client,任何操作都需要此client(类似httpclient吧,发送请求操作):

// 设置集群名称cluster.name:        Settings settings = Settings.builder().put("cluster.name", "betawoo_es").build();//特别注意,java操作端口为:9300        Client client = new PreBuiltTransportClient(settings)                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("139.116.196.10"), 9300));
提醒:使用完毕记得关闭,调用:client.close();


1、新建索引

//json字符串,也可以直接传Map        String json = "{\"title\":\"我从windows创建\",\"label\":[\"美式沙发\"],\"create_date\":\"2017-11-1 15:41:01\"}";        IndexResponse response = client.prepareIndex("index_名称", "type_名称").setId("0").setSource(json).execute().actionGet();        // Index name        String _index = response.getIndex();        // Type name        String _type = response.getType();        // Document ID (generated or not)        String _id = response.getId();        // Version        long _version = response.getVersion();        System.out.println("-------:"+_id+"创建成功!");

2、删除索引(根据id删除)

DeleteResponse deleteresponse = client.prepareDelete("index_名称", "type_名称","9db3f12721624f6a888e0c62181ffe8a")                .execute()                .actionGet();        System.out.println(deleteresponse.getVersion());

3、分页搜索

QueryBuilder包路径:importorg.elasticsearch.index.query.QueryBuilder;

//搜索匹配内容,等同:curl -X GET http://localhost:9200/test/kind/_search?pretty -d '{"query" : {"match" : {"label" : "映享优选"}}}'        QueryBuilder matchQuery = QueryBuilders.matchQuery("label", "映享优选");        SearchResponse response = client.prepareSearch("portal").setTypes("product")//设置索引和类型                .setQuery(matchQuery).setFrom(0).setSize(60)//设置分页参数(获取1-60条,0开始)类似mysql limit分页                .execute().actionGet();        //获取查询结果集        SearchHits searchHits = response.getHits();        System.out.println("共搜到:"+searchHits.getTotalHits()+"条结果!");        //遍历结果        for(SearchHit hit:searchHits){            System.out.println("String方式打印文档搜索内容:");            System.out.println(hit.getSourceAsString());//            System.out.println(hit.getId());        }







阅读全文
0 0