Elasticsearch简单操作(Java代码)

来源:互联网 发布:编写软件用什么软件 编辑:程序博客网 时间:2024/06/04 19:24

1.首先安装Elasticsearch,配置相关文件,并启动服务

2.创建项目,导入相关Jar包

3.创建ElasticsearchUtils类,里面包括初始化操作和创建索引、更新索引、删除索引、查询索引

(1)初始化操作,需要传入集群名称和ip地址,集群名称本例子使用elasticsearch配置文件中配置的cluster name,IP地址使用localhost

public class ElasticsearchUtils {    private Client client;    public ElasticsearchUtils(String clusterName, String ipAddress) {        Settings settings = ImmutableSettings                .settingsBuilder()                //设置集群名称                 .put("cluster.name", clusterName)                .put("client.transport.ignore_cluster_name", false)                .put("node.client", true).put("client.transport.sniff", true)                .build();        client = new TransportClient(settings)                .addTransportAddress(new InetSocketTransportAddress(ipAddress,                        9300));//此处端口号为9300    }}


(2)创建索引

/**     * 创建索引     * @param indexName 索引名称,相当于数据库名称     * @param typeName 索引类型,相当于数据库中的表名     * @param id id名称,相当于每个表中某一行记录的标识     * @param jsonData json数据     */    public void createIndex(String indexName, String typeName, String id,            String jsonData) {        IndexRequestBuilder requestBuilder = client.prepareIndex(indexName,            typeName, id).setRefresh(true);//设置索引名称,索引类型,id        requestBuilder.setSource(jsonData).execute().actionGet();//创建索引    }


(3)查询索引

 /**     * 执行搜索     * @param indexname 索引名称     * @param type 索引类型     * @param queryBuilder 查询条件     * @return     */    public SearchResponse searcher(String indexName, String typeName,            QueryBuilder queryBuilder) {        SearchResponse searchResponse = client.prepareSearch(indexName)                .setTypes(typeName).setQuery(queryBuilder).execute()                .actionGet();//执行查询        return searchResponse;    }

(4)更新索引

 /**     * 更新索引     * @param indexName 索引名称     * @param typeName 索引类型     * @param id id名称     * @param jsonData json数据     */    public void updateIndex(String indexName, String typeName, String id,            String jsonData) {        UpdateRequest updateRequest = new UpdateRequest();        updateRequest.index(indexName);//设置索引名称        updateRequest.id(id);//设置id        updateRequest.type(typeName);//设置索引类型        updateRequest.doc(jsonData);//更新数据        client.update(updateRequest).actionGet();//执行更新    }

(5)删除索引

 /**     * 删除索引     * @param indexName     * @param typeName     * @param id     */    public void deleteIndex(String indexName, String typeName, String id) {        client.prepareDelete(indexName, typeName, id).get();    }


4.创建测试类

package com.elasticsearch.test;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.index.query.QueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.SearchHits;public class Test {    public static void main(String[] args) {        //创建对象,设置集群名称和IP地址        ElasticsearchUtils es = new ElasticsearchUtils("im_shan",                "localhost");        String indexName = "school";//索引名称        String typeName = "student";//类型名称        String id = "1";        String jsonData = "{" + "\"name\":\"kimchy\","                + "\"birth\":\"1995-01-30\"," + "\"email\":\"kimchy@163.com\""                + "}";//json数据        //1.创建索引(ID可自定义也可以自动创建,此处使用自定义ID)        es.createIndex(indexName, typeName, id, jsonData);        //2.执行查询        //(1)创建查询条件        QueryBuilder queryBuilder = QueryBuilders.termQuery("name", "kimchy");//搜索name为kimchy的数据        //(2)执行查询        SearchResponse searchResponse = es.searcher(indexName, typeName,            queryBuilder);        //(3)解析结果        SearchHits hits = searchResponse.getHits();        SearchHit[] searchHits = hits.getHits();        for (SearchHit searchHit : searchHits) {            String name = (String) searchHit.getSource().get("name");            String birth = (String) searchHit.getSource().get("birth");            String email = (String) searchHit.getSource().get("email");            System.out.println(name);            System.out.println(birth);            System.out.println(email);        }        //3.更新数据        jsonData = "{" + "\"name\":\"jack\"," + "\"birth\":\"1996-01-30\","                + "\"email\":\"jack@163.com\"" + "}";//json数据        es.updateIndex(indexName, typeName, id, jsonData);        //4.删除数据        es.deleteIndex(indexName, typeName, id);    }}

1.创建索引之后,可以在浏览器输入http://localhost:9200/_plugin/head/ 进行查看,可以发现索引已创建,index名称为school,type为student,id为1


2.查询索引,控制台会输出name为kimchy的birth、email的值

3.更新索引,此时再次进入http://localhost:9200/_plugin/head/ 进行查看,发现内容已经改变



4.删除索引,代码执行后输入http://localhost:9200/_plugin/head/ 查看,内容已清空




参考:http://www.tuicool.com/articles/R7RVJb

官方Java API:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html


源码下载:http://download.csdn.net/detail/lom9357bye/9656269

1 0
原创粉丝点击