首页 > 代码库 > elasticsearch-1.2.1客户端连接DEMO
elasticsearch-1.2.1客户端连接DEMO
1.下载elasticsearch-1.2.1的zip包,解压之后 双击bin目录中的 elasticsearch.bat(针对windows系统) 启动服务器(默认监听9200端口)
访问 http://localhost:9200 出现下边的json数据则说明启动成功
2.客户端连接的代码示例:
package com.jiaoyiping.othersimple;/** * Created with IntelliJ IDEA. * User: 焦一平 * Date: 14-7-8 * Time: 下午11:57 * To change this template use File | Settings | File Templates. */import java.util.ArrayList;import java.util.List;import org.elasticsearch.action.index.IndexRequestBuilder;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.Client;import org.elasticsearch.client.transport.TransportClient;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 org.slf4j.Logger;import org.slf4j.LoggerFactory;public class ElasticSearchHandler { Logger logger = LoggerFactory.getLogger(ElasticSearchHandler.class); private Client client; public ElasticSearchHandler(){ //使用本机做为节点 this("127.0.0.1"); } public ElasticSearchHandler(String ipAddress){ client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300)); } /** * @param jsondata json格式的数据集合 * * @return */ public void createIndexResponse(String indexname, String type, List<String> jsondata){ //创建索引库 需要注意的是.setRefresh(true)这里一定要设置,否则第一次建立索引查找不到数据 IndexRequestBuilder requestBuilder = client.prepareIndex(indexname, type).setRefresh(true); for(int i=0; i<jsondata.size(); i++){ requestBuilder.setSource(jsondata.get(i)).execute().actionGet(); } } /** * 创建索引 * param client * @param jsondata * @return */ public IndexResponse createIndexResponse(String indexname, String type,String jsondata){ IndexResponse response = client.prepareIndex(indexname, type) .setSource(jsondata) .execute() .actionGet(); return response; } /** * 执行搜索 * @param queryBuilder * @param indexname * @param type * @return */ public List<Medicine> searcher(QueryBuilder queryBuilder, String indexname, String type){ List<Medicine> list = new ArrayList<Medicine>(); SearchResponse searchResponse = client.prepareSearch(indexname).setTypes(type) .setQuery(queryBuilder) .execute() .actionGet(); SearchHits hits = searchResponse.getHits(); System.out.println("查询到记录数=" + hits.getTotalHits()); SearchHit[] searchHists = hits.getHits(); if(searchHists.length>0){ for(SearchHit hit:searchHists){ Integer id = (Integer)hit.getSource().get("id"); String name = (String) hit.getSource().get("name"); String function = (String) hit.getSource().get("funciton"); list.add(new Medicine(id, name, function)); } } client.close();//关闭连接(如果在这里不关闭的话会报:远程主机强制关闭了一个连接) return list; } public static void main(String[] args) { ElasticSearchHandler esHandler = new ElasticSearchHandler(); List<String> jsondata =http://www.mamicode.com/ DataFactory.getInitJsonData(); String indexname = "indexdemo"; String type = "typedemo"; //添加到索引 // esHandler.createIndexResponse(indexname, type, jsondata); //查询条件 QueryBuilder queryBuilder = QueryBuilders.queryString("name:姓名") ; List<Medicine> result = esHandler.searcher(queryBuilder, indexname, type); for(int i=0; i<result.size(); i++){ Medicine medicine = result.get(i); System.out.println("(" + medicine.getId() + ")名称:" +medicine.getName() + "\t\t" + medicine.getFunction()); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。