ElasticSearch学习笔记 安装 配置

来源:互联网 发布:linux lvs 配置 编辑:程序博客网 时间:2024/06/06 02:49
先附上api和中文文档的地址:
ESAPI:https://es.xiaoleilu.com/010_Intro/15_API.html
中文文档 http://www.learnes.net/getting_started/tutorial_indexing.html
一.安装(单节点)
目前用的是2.2.0版本的,最新是5.3.0不太会用,以后再进行升级
 最新版本的下载地址:https://www.elastic.co/downloads/elasticsearch
2.2.0 下载地址:https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.2.0/elasticsearch-2.2.0.tar.gz
(1)进入下载目录解压 tar -zxvfelasticsearch-2.2.0.tar.gz
(2)修改配置文件 [hadoop@hadoop01 elasticsearch-2.2.0]$ vi config/elasticsearch.yml 
http.port: 9200
transport.tcp.port: 9300
network.host: 192.168.237.11
node.name: hadoop01
cluster.name: elasticsearch (注意冒号后面一定要有空格)
(3)安装head插件(类似于mysql的navicate客户端)
[hadoop@hadoop01 elasticsearch-2.2.0]$ ./bin/plugin install mobz/elasticsearch-head
(4)启动elasticsearch
./bin/elasticsearch
使用jps查看是否启动成功
(5)用浏览器访问 http://{你的ip}/_plugin/head,如下图所示:

二.使用
在此用java将article.json 存入es建立索引,主要代码如下:
import org.apache.commons.lang.StringUtils;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchRequestBuilder;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.action.search.SearchType;import org.elasticsearch.client.Client;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.text.Text;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.SearchHits;import org.elasticsearch.search.highlight.HighlightField;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Esutil {public static Client client = null;/** * 获取客户端 * @return */public static  Client getClient() {if(client!=null){return client;}Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").put("client.transport.sniff", true).build();try {client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.237.11"), 9300));} catch (UnknownHostException e) {e.printStackTrace();}return client;}public static String addIndex(String index,String type,Article article){HashMap<String, Object> hashMap = new HashMap<String, Object>();hashMap.put("id", article.getId());hashMap.put("title", article.getTitle());hashMap.put("url", article.getUrl());hashMap.put("content", article.getContent());IndexResponse response = getClient().prepareIndex(index, type).setSource(hashMap).execute().actionGet();return response.getId();}public static Map<String, Object> search(String key,String index,String type,int start,int row){SearchRequestBuilder builder = getClient().prepareSearch(index);builder.setTypes(type);builder.setFrom(start);builder.setSize(row);//设置高亮字段名称builder.addHighlightedField("title");//builder.addHighlightedField("describe");//设置高亮前缀builder.setHighlighterPreTags("<font color='red' >");//设置高亮后缀builder.setHighlighterPostTags("</font>");builder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);if(StringUtils.isNotBlank(key)){builder.setQuery(QueryBuilders.multiMatchQuery(key, "title","content"));}builder.setExplain(true);SearchResponse searchResponse = builder.get();SearchHits hits = searchResponse.getHits();long total = hits.getTotalHits();Map<String, Object> map = new HashMap<String,Object>();SearchHit[] hits2 = hits.getHits();map.put("count", total);List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();for (SearchHit searchHit : hits2) {Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();HighlightField highlightField = highlightFields.get("title");Map<String, Object> source = searchHit.getSource();if(highlightField!=null){Text[] fragments = highlightField.fragments();String name = "";for (Text text : fragments) {name+=text;}source.put("title", name);}HighlightField highlightField2 = highlightFields.get("describe");if(highlightField2!=null){Text[] fragments = highlightField2.fragments();String describe = "";for (Text text : fragments) {describe+=text;}source.put("content", describe);}list.add(source);}map.put("dataList", list);return map;}//public static void main(String[] args) {//Map<String, Object> search = Esutil.search("hbase", "tfjt", "doc", 0, 10);//List<Map<String, Object>> list = (List<Map<String, Object>>) search.get("dataList");//}}



0 0