Elasticsearch简单操作(Java代码)

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

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

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

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

  1. public class ElasticsearchUtils {  
  2.   
  3.     private Client client;  
  4.   
  5.     public ElasticsearchUtils(String clusterName, String ipAddress) {  
  6.         Settings settings = ImmutableSettings  
  7.                 .settingsBuilder()  
  8.                 //设置集群名称   
  9.                 .put(”cluster.name”, clusterName)  
  10.                 .put(”client.transport.ignore_cluster_name”false)  
  11.                 .put(”node.client”true).put(“client.transport.sniff”true)  
  12.                 .build();  
  13.         client = new TransportClient(settings)  
  14.                 .addTransportAddress(new InetSocketTransportAddress(ipAddress,  
  15.                         9300));//此处端口号为9300  
  16.     }  
  17. }  
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)创建索引

  1. /** 
  2.      * 创建索引 
  3.      * @param indexName 索引名称,相当于数据库名称 
  4.      * @param typeName 索引类型,相当于数据库中的表名 
  5.      * @param id id名称,相当于每个表中某一行记录的标识 
  6.      * @param jsonData json数据 
  7.      */  
  8.     public void createIndex(String indexName, String typeName, String id,  
  9.             String jsonData) {  
  10.         IndexRequestBuilder requestBuilder = client.prepareIndex(indexName,  
  11.             typeName, id).setRefresh(true);//设置索引名称,索引类型,id  
  12.         requestBuilder.setSource(jsonData).execute().actionGet();//创建索引  
  13.     }  
/**
     * 创建索引
     * @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)查询索引

  1. /** 
  2.     * 执行搜索 
  3.     * @param indexname 索引名称 
  4.     * @param type 索引类型 
  5.     * @param queryBuilder 查询条件 
  6.     * @return 
  7.     */  
  8.    public SearchResponse searcher(String indexName, String typeName,  
  9.            QueryBuilder queryBuilder) {  
  10.        SearchResponse searchResponse = client.prepareSearch(indexName)  
  11.                .setTypes(typeName).setQuery(queryBuilder).execute()  
  12.                .actionGet();//执行查询  
  13.        return searchResponse;  
  14.    }  
 /**
     * 执行搜索
     * @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)更新索引

  1. /** 
  2.     * 更新索引 
  3.     * @param indexName 索引名称 
  4.     * @param typeName 索引类型 
  5.     * @param id id名称 
  6.     * @param jsonData json数据 
  7.     */  
  8.    public void updateIndex(String indexName, String typeName, String id,  
  9.            String jsonData) {  
  10.        UpdateRequest updateRequest = new UpdateRequest();  
  11.        updateRequest.index(indexName);//设置索引名称  
  12.        updateRequest.id(id);//设置id  
  13.        updateRequest.type(typeName);//设置索引类型  
  14.        updateRequest.doc(jsonData);//更新数据  
  15.        client.update(updateRequest).actionGet();//执行更新  
  16.    }  
 /**
     * 更新索引
     * @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)删除索引

  1. /** 
  2.     * 删除索引 
  3.     * @param indexName 
  4.     * @param typeName 
  5.     * @param id 
  6.     */  
  7.    public void deleteIndex(String indexName, String typeName, String id) {  
  8.        client.prepareDelete(indexName, typeName, id).get();  
  9.    }  
 /**
     * 删除索引
     * @param indexName
     * @param typeName
     * @param id
     */
    public void deleteIndex(String indexName, String typeName, String id) {
        client.prepareDelete(indexName, typeName, id).get();
    }

4.创建测试类

  1. package com.elasticsearch.test;  
  2.   
  3. import org.elasticsearch.action.search.SearchResponse;  
  4. import org.elasticsearch.index.query.QueryBuilder;  
  5. import org.elasticsearch.index.query.QueryBuilders;  
  6. import org.elasticsearch.search.SearchHit;  
  7. import org.elasticsearch.search.SearchHits;  
  8.   
  9. public class Test {  
  10.     public static void main(String[] args) {  
  11.         //创建对象,设置集群名称和IP地址  
  12.         ElasticsearchUtils es = new ElasticsearchUtils(“im_shan”,  
  13.                 ”localhost”);  
  14.         String indexName = ”school”;//索引名称  
  15.         String typeName = ”student”;//类型名称  
  16.         String id = ”1”;  
  17.         String jsonData = ”{“ + “\”name\”:\”kimchy\”,”  
  18.                 + ”\”birth\”:\”1995-01-30\”,” + “\”email\”:\”[email protected]\”“  
  19.                 + ”}”;//json数据  
  20.         //1.创建索引(ID可自定义也可以自动创建,此处使用自定义ID)  
  21.         es.createIndex(indexName, typeName, id, jsonData);  
  22.   
  23.         //2.执行查询  
  24.         //(1)创建查询条件  
  25.         QueryBuilder queryBuilder = QueryBuilders.termQuery(”name”“kimchy”);//搜索name为kimchy的数据  
  26.         //(2)执行查询  
  27.         SearchResponse searchResponse = es.searcher(indexName, typeName,  
  28.             queryBuilder);  
  29.         //(3)解析结果  
  30.         SearchHits hits = searchResponse.getHits();  
  31.         SearchHit[] searchHits = hits.getHits();  
  32.         for (SearchHit searchHit : searchHits) {  
  33.             String name = (String) searchHit.getSource().get(”name”);  
  34.             String birth = (String) searchHit.getSource().get(”birth”);  
  35.             String email = (String) searchHit.getSource().get(”email”);  
  36.             System.out.println(name);  
  37.             System.out.println(birth);  
  38.             System.out.println(email);  
  39.         }  
  40.   
  41.         //3.更新数据  
  42.         jsonData = ”{“ + “\”name\”:\”jack\”,” + “\”birth\”:\”1996-01-30\”,”  
  43.                 + ”\”email\”:\”[email protected]\”“ + “}”;//json数据  
  44.         es.updateIndex(indexName, typeName, id, jsonData);  
  45.   
  46.         //4.删除数据  
  47.         es.deleteIndex(indexName, typeName, id);  
  48.     }  
  49. }  
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”:"[email protected]""
+ “}”;//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\":\"[email protected]\"" + "}";//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

        </div>

猜你喜欢

转载自blog.csdn.net/weixin_42329335/article/details/86627279