elasticsearch2.4.3 javaAPI的一些基本操作

本文介绍如何使用Java进行Elasticsearch的基本操作,包括建立连接、创建索引、批量导入数据及执行搜索等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

elasticsearch2.4.3一些基本操作
import org.elasticsearch.client.Client;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import java.net.InetAddress;import java.net.UnknownHostException;/** 获取Client * Created by Administrator on 2017/6/13. */public class getElasticSearchClient { public static Client client = null; /** * 获取客户端 * @return */ public static Client getTransportClient(String ClusterName, String masterIP) { if(client!=null){ return client; } Settings settings = Settings.settingsBuilder().put("cluster.name", ClusterName).put("client.transport.sniff", true).build();//开启搜索es集群 try { client = TransportClient.builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(masterIP), 9300)); } catch (UnknownHostException e) { e.printStackTrace(); } return client; }}


import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;

/** 创建索引、类似mysql建表
 * Created by Administrator on 2017/6/7.
 */
public class ElasticSearchHandler {
    /**
     * 创建索引
     * @param args
     */
    public static void main(String[] args) throws Exception{
        CreateIndexRequestBuilder cib = getElasticSearchClient.getTransportClient("jb","master").admin().indices().prepareCreate("esdatatest10");
        XContentBuilder mapping = XContentFactory.jsonBuilder().startObject()
                    .startObject("dataall5")
                        .startObject("properties")
                            .startObject("RN").field("type","String").endObject()
                            .startObject("title").field("type","String").endObject()
                         .endObject()
                    .endObject()
                .endObject();
        cib.addMapping("dataall5",mapping);
        cib.execute().actionGet();
//        client.close();
    }
}

import java.util.List;

import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;

/**bulk批量插数
 * Created by Administrator on 2017/6/13.
 */
public class BulkBuilder {
    /**
     *
     * @param filePath 文件路径
     * @param IndexName 数据库名字
     * @param typeName 表名字
     * @param ClusterName es连接名
     * @param masterIP ES集群master的IP
     * @throws Exception
     */
    public static void insertExcel(String filePath,String IndexName,String typeName,String ClusterName,String masterIP)throws Exception{
        //获取EXcel数据
        LoadExcelUtil load = new LoadExcelUtil();
        List<dataAll> list = load.testReadExcel(filePath);//参数:文件夹路径
        //创建连接
        Client client = getElasticSearchClient.getTransportClient(ClusterName,masterIP);
        BulkRequestBuilder bulkRequest = client.prepareBulk();
        for(dataAll data :list){
            System.out.println(data);
            bulkRequest.add(client.prepareIndex(IndexName,typeName)
                    .setSource(jsonBuilder()
                            .startObject()
                            .field("RN",data.getRN())
                            .field("title",data.getName() + "," + data.getPerson() + "," + data.getAddress() + "," + data.getRegister_type()
                                    + "," + data.getDate() + "," + data.getDepart() + "," + data.getDepart_code()
                                    + "," + data.getCode() + "," + data.getCreate_time() + "," + data.getUpdate_time())

                            .endObject()
                    )
            );
        }
        BulkResponse bulkResponse = bulkRequest.execute().actionGet();
        if (bulkResponse.hasFailures()) {
            System.out.println("插入数据异常");
        }
    }
}

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHits;

/**搜索工具类
 * Created by Administrator on 2017/6/8.
 */
public class ElasticSearchGet {
    /**
     *
     * @param str 查询条件
     * @param flag 与或非判断条件
     * @param ClusterName es集群名
     * @param masterIP es 的master ip
     * @param indexName es 的数据库名
     * @param typeName es 的表名
     * @return
     */
    public static Long esSearch(String str,String flag,String ClusterName,String masterIP,String indexName,String typeName){
        Client client = getElasticSearchClient.getTransportClient(ClusterName,masterIP);
        long startTime = System.currentTimeMillis();
        String[] str1 = str.split(",");
        BoolQueryBuilder qb = QueryBuilders.boolQuery();
        if(flag.equals("or")) {
            for (String s : str1) {
                MatchQueryBuilder mpq = QueryBuilders.matchPhraseQuery("title", s);
                qb.mustNot(mpq);
            }
        }else if(flag.equals("and")){
            for (String s : str1) {
                MatchQueryBuilder mpq = QueryBuilders.matchPhraseQuery("title", s);
                qb.must(mpq);
            }
        }else{
            for (String s : str1) {
                MatchQueryBuilder mpq = QueryBuilders.matchPhraseQuery("title", s);
                qb.should(mpq);
            }
        }
        SearchResponse searchResponse = client.prepareSearch(indexName)
                .setTypes(typeName)
                .setQuery(QueryBuilders.matchAllQuery())//查询所有
                .setQuery(qb)
                .setFrom(0).setSize(10).execute().actionGet();//设置分页.addSort("age", SortOrder.DESC)//排序
        SearchHits hits = searchResponse.getHits();
        long total = hits.getTotalHits();
        long endTime = System.currentTimeMillis();
        System.out.println("程序运行时间 :" + (endTime-startTime) + "ms");
        return total;
    }

    /**
     * 测试查询
     * @param args
     */
    public static void main(String[] args){
       long arr = ElasticSearchGet.esSearch("广州,18号","or","jb","master","esdatatest5","dataall5");
        System.out.println(arr);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值