ElasticSearch
官网地址:https://www.elastic.co/learn
1.安装
安装elasticsearch,可视化管理工具marvel,kibana。
在本机,都安装在cellar中,目前插件只安装了marvel和kibana,ik,head。
Elasticsearch初步使用(安装、Head配置、分词器配置)
安装head:
bin/plugin install mobz/elasticsearch-head
进入head:http://localhost:9200/_plugin/head/
查看插件的url可以参照上面。推荐使用head,好用多了。
启动ElasticSearch很简单,执行安装目录下bin/elasticsearch即可;ElasticSearch 1.0.0的启动机制有一些变化,默认在前台运行,-d参数表示在后台运行;另外还提供-p参数,后接文件名,保存当前ElasticSearch进程的pid,方便关闭进程;使用ps aux|grep elasticsearch可以查看是否启动
|
|
servicewrapper插件不支持2.x的版本,所以不使用其来控制es。
关闭es
前台运行:可以通过”CTRL+C”组合键来停止运行
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:
|
|
来关闭整个集群,通过:
|
|
来关闭单个节点。也可以通过head来关闭。
注:shutdown接口已经被弃用。
配置
可以参见http://blog.csdn.net/sinat_28224453/article/details/51134978。
2.分词
如果版本对不上,可以改ik的pom文件的es版本号。
分词教程:
field must be set when search_analyzer is set
- 请求参数:
curl -XPUT http://es1.es.com:9200/cloudx_web_v3/T_EVENT_LOG/_mapping?pretty-d ‘{“T_EVENT_LOG”:{“properties”:{“name”:{“type”:”string”,”indexAnalyzer”:”ik”,”searchAnalyzer”:”ik”}}}}’- 问题日志:
{“error”:{“root_cause”:[{“type”:”mapper_parsing_exception”,”reason”:”analyzer on field [name] must be set when search_analyzer is set”}],”type”:”mapper_parsing_exception”,”reason”:”analyzer on field [name] must be set when search_analyzer is set”},”status”:400}- 问题解决:参考旧版本教程的坑,V2.3.4的参数改了,应为
curl -XPUT http://es1.es.com:9200/cloudx_web_v3/T_EVENT_LOG/_mapping?pretty-d ‘{“T_EVENT_LOG”:{“properties”:{“name”:{“type”:”string”,”analyzer”:”ik”,”search_analyzer”:”ik”}}}}’
Mapping语法:
curl -XPUT localhost:9200/索引名称/类型名称/_mapping?pretty -d ‘{“类型名称”:{“properties”:{“字段名称”:{“type”:”字段类型”,”store”:”是否存储”,”index”:”索引方式、是否分析”}}}}’
分词的配置,推荐在创建mapping的时候,对index analyzer进行ik_max_word,对查询则ik_smart。参见Elasticsearch中使用ik分词器 java api
|
|
第三方库
elasticsearch-mapper-attachments
https://github.com/elastic/elasticsearch-mapper-attachments
通过elasticsearch-mapper attachment插件实现文件建立索引
tika
Tika文本提取工具的使用(word、pdf、excel等)
基于内容的推荐
more like this 关键字段
使用
1)在java中使用elasticSearch
https://www.elastic.co/blog/found-java-clients-for-elasticsearch
官方java api的翻译版
https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/java-api/README.html
源码 api : http://javadoc.kyubu.de/elasticsearch/v1.7.3/
1.native client
2.jest
elasticsearch RESTful搜索引擎-(java jest 使用[入门])
3.spring-data-elasticsearch
spring-data-elasticsearch git地址
spring-data-elasticsearch gitBook
实例
调用restful api
java api实例
应用
1)es小结 : Elasticsearch学习,请先看这一篇
2)Elasticsearch 现在主要的应用场景有三块。
1.站内搜索,主要和 Solr 竞争,属于后起之秀。
2.NoSQL json文档数据库,主要抢占 Mongo 的市场,它在读写性能上优于 Mongo(见文末比较链接),同时也支持地理位置查询,还方便地理位置和文本混合查询,属于歪打正着。
3.监控,统计以及日志类时间序的数据的存储和分析以及可视化,这方面是引领者。
开源搜索引擎评估:lucene sphinx elasticsearch
源码分析
建议阅读源码
系列教程
restful系列教程
(ElasticSearch权威教程)ElasticSearch 2
java api系列教程
教程
问题:
elasticsearch出现TranslogCorruptedException导致shard不能启动的问题修复
配置远程访问:
在服务器的es的config文件里面把network.host改为0.0.0.0
es启动出现问题
一定不要用ctrl+z,要ctrl+c去停止,前者只是暂停,不是终止。
CTRL-Z和CTRL-C都是中断命令,但是他们的作用却不一样.
CTRL-C是强制中断程序的执行,
而CTRL-Z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.
例如:
当你vi一个文件是,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得
存盘推出,你可以简单的按下CTRL-Z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件.ctrl-d: ( Terminate input, or exit shell ) 一个特殊的二进制值,表示 EOF,作用相当于在终端中输入exit后回车;
Elasticsearch与mysql的实时增量更新
想要增量同步,有一些先决条件。首先数据库中要维护一个update_time的时间戳,这个字段表示了该记录的最后更新时间。然后定时执行一个任务,这个任务中执行的sql就是根据时间戳判断该记录是否应该被更新。
出自系列教程深入理解elasticsearch
将mysql导入到es中
常用的插件是elasticsearch-jdbc, elasticsearch-river-MySQL , Go-mysql-elasticsearch, logstash-input-jdbc这四种。之间的比较参见这篇mysql 与elasticsearch实时同步常用插件及优缺点对比
logstash-input-jdbc
使用logstash将数据库的数据导入elasticsearch
参数说明参见:logstash input jdbc连接数据库
logstash-input-jdbc实现mysql 与elasticsearch实时同步深入详解
官方说明:
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc-type
https://github.com/logstash-plugins/logstash-input-jdbc
|
|