Elasticsearch 2.3.5示例代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangqing84411433/article/details/86300431

系统环境:

系统:windows 10  64位

JDK :1.7.0_80

开发工具:Eclipse Luna 4.4

搜索引擎:Elasticsearch 2.3.5

IK中文分词器:1.9.5

Node.js:node-v10.14.2-x64.msi(64位)

HEAD插件:master版本

建立Maven项目

一、Maven依赖

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.3.5</version>
</dependency>
  	
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.7</version>
</dependency>

二、Java代码

package easticsearch;

import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;

import com.alibaba.fastjson.JSON;

public class Elasticsearch {
	private static TransportClient client = null;
    /**
     * es index
     */
    private static final String ES_INDEX = "database_test";
    /**
     * es type
     */
    private static final String ES_TYPE  = "user";

    //创建客户端
    private static void createClient() throws Exception {
    	if (client == null) {
    		 synchronized (Elasticsearch.class) {
    			 Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
    			 client = TransportClient.builder().settings(settings).build()
    					 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
    			 System.out.println("启动客户端:"+client);//启动客户端:org.elasticsearch.client.transport.TransportClient@16e2a4c8
    		 }
    	}
    }
	
    //获取日期 年月日 时分秒
    public static String tranTime(){
    	return new SimpleDateFormat("YY-MM-DD HH:mm:ss").format(new Date());
    }
     
	/**
	 * 创建es库并导入数据
	 */
    private static String createIndex() {
    	//json字符串    {"username":"zhengyong","postDate":"19-01-11 10:56:04","message":"create"}
    	String json = "{" + "\"username\":\"zhengyong\"," + "\"postDate\":\"" + tranTime() + "\","
                 + "\"message\":\"create\"" + "}";
    	IndexResponse response = client.prepareIndex(ES_INDEX, ES_TYPE).setSource(json).get();
        System.out.println(String.format("create index response: %s", response.toString()));
    	return response.getId();
    }
	
    /**
     * 根据_id获取数据
     * @param _id
     */
    private static GetResponse getDataResponse(String _id) {
    	GetResponse response = client.prepareGet(ES_INDEX, ES_TYPE, _id).get();
    	System.out.println(String.format("get data response: %s", JSON.toJSONString(response.getSource())));
    	return response;
    }
	
    /**
     * 根据查询条件查询结果集
     * @param queryBuilder
     * @return
     */
    private static List<String> queryDataList(QueryBuilder queryBuilder) {
    	SearchResponse sResponse = client.prepareSearch(ES_INDEX).setTypes(ES_TYPE).setQuery(queryBuilder).setSize(1000).execute().actionGet();
    	SearchHits hits = sResponse.getHits();
    	List<String> list = new ArrayList<String>();
        SearchHit[] hitArray = hits.hits();
        Map<String, Object> map;
        for (SearchHit hit : hitArray) {
        	map = hit.getSource();
            String username = (String) map.get("username");
            String postDate = (String) map.get("postDate");
            String message = (String) map.get("message");
            StringBuilder br = new StringBuilder();
            br.append(username).append("_").append(message).append("_").append(postDate);
            list.add(br.toString());
        }
        System.out.println(String.format("query data count=%s, list : %s", list.size(), JSON.toJSONString(list)));
    	return list;
    }
    
    /**
     * 根据_id删除数据
     * @param _id
     * @return
     */
    private static DeleteResponse deleteDataResponse(String _id) {
    	DeleteResponse response = client.prepareDelete(ES_INDEX, ES_TYPE, _id).get();
    	System.out.println(String.format("delete data response: %s", JSON.toJSONString(response)));
        return response;
    }
    
    /**
     * 根据_id更新数据
     * @param _id
     * @throws Exception
     */
    private static void updateData(String _id) throws Exception {
    	UpdateRequest updateRequest = new UpdateRequest();
        updateRequest.index(ES_INDEX);
        updateRequest.type(ES_TYPE);
        updateRequest.id(_id);

        String json = "{" + "\"username\":\"lisi\"," + "\"postDate\":\"" + tranTime() + "\","
                      + "\"message\":\"update\"" + "}";
        updateRequest.doc(json);
        client.update(updateRequest).get();
    }
    
    /**
     * 关闭客户端
     * @param args
     */
    private static void shutdown() {
        if (client != null) {
            client.close();
            System.out.println("=====关闭=====");
        }
    }
    
	//测试
	public static void main(String[] args) throws Exception {
		createClient();
		//String _id = createIndex();//插入一条数据
		//System.out.println("ID:"+_id);
		//getDataResponse("AWg7e1n-23-0DPtsBnWe");//根据_id查询某条数据                     {"message":"create","username":"zhengyong","postDate":"19-01-11 13:56:06"}
		//updateData("AWg7e1n-23-0DPtsBnWe");//根据_id更新某条数据(此处只更新日期) {"message":"update","username":"lisi","postDate":"19-01-11 14:06:01"}
		
		//QueryBuilder builder = QueryBuilders.matchAllQuery();//全部查询
		//QueryBuilder builder = QueryBuilders.termQuery("username", "zhengyong");//有查询条件
		//queryDataList(builder);
		
		//deleteDataResponse("AWg7fY1E23-0DPtsBnWf");//根据_id删除某条数据
		
		shutdown();//关闭客户端
	}
	
	
	
}

猜你喜欢

转载自blog.csdn.net/wangqing84411433/article/details/86300431