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); } }