elasticsearch

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可以查看是否启动

1
2
$ bin/elasticsearch -d -p /tmp/es.pid
$ kill `cat /tmp/es.pid`

servicewrapper插件不支持2.x的版本,所以不使用其来控制es。

关闭es

前台运行:可以通过”CTRL+C”组合键来停止运行
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:

1
curl -XPOST http://主机IP:9200/_cluster/nodes/_shutdown

来关闭整个集群,通过:

1
curl -XPOST http://主机IP:9200/_cluster/nodes/节点标示符(如es-node1)/_shutdown

来关闭单个节点。也可以通过head来关闭。

注:shutdown接口已经被弃用。

ElasticSearch关闭重启命令

配置

可以参见http://blog.csdn.net/sinat_28224453/article/details/51134978。

http://www.qixing318.com/article/elasticsearch-distributed-search-engine-used-in-the-installation-of-the-linux-platform.html

elasticsearch配置小记

2.分词

ik git地址

如果版本对不上,可以改ik的pom文件的es版本号。

分词教程:

elasticsearch的实现全文检索

为Elasticsearch添加中文分词,对比分词器效果

Elasticsearch——分词器对String的作用

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

1
2
3
4
5
6
7
8
9
10
11
12
13
index:
analysis:
analyzer:
ik:
alias: [ik_analyzer]
type: ik
ik_max_word:
type: ik
use_smart: false
ik_smart:
type: ik
use_smart: true
index.analysis.analyzer.default.type: ik

第三方库

elasticsearch-mapper-attachments

https://github.com/elastic/elasticsearch-mapper-attachments

通过elasticsearch-mapper attachment插件实现文件建立索引

elasticsearch索引文档-attachment

tika

Tika文本提取工具的使用(word、pdf、excel等)

Apache Tika:通用的内容分析工具

【NLP】Tika 文本预处理:抽取各种格式文件内容

Tika教程

基于内容的推荐

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

elasticsearch 2种客户端的区别

ElasticSearch 之 Client

2.jest

elasticsearch RESTful搜索引擎-(java jest 使用[入门])

3.spring-data-elasticsearch

spring-data-elasticsearch git地址

spring-data-elasticsearch gitBook

实例

调用restful api

ElasticSearch实战-编码实践

java api实例

用elasticsearch为你的项目提供垂直搜索服务

应用

1)es小结 : Elasticsearch学习,请先看这一篇

2)Elasticsearch 现在主要的应用场景有三块。

1.站内搜索,主要和 Solr 竞争,属于后起之秀。

2.NoSQL json文档数据库,主要抢占 Mongo 的市场,它在读写性能上优于 Mongo(见文末比较链接),同时也支持地理位置查询,还方便地理位置和文本混合查询,属于歪打正着。

3.监控,统计以及日志类时间序的数据的存储和分析以及可视化,这方面是引领者。

开源搜索引擎评估:lucene sphinx elasticsearch

源码分析

建议阅读源码

搜索引擎框架-elasticsearch

系列教程

elasticsearch口水篇

分布式搜索Elasticsearch——项目过程(二)

restful系列教程

(ElasticSearch权威教程)ElasticSearch 2

java api系列教程

ElasticSearch的Java API

elasticsearch

教程

elasticsearch教程

使用java访问elasticsearch创建索引

Elasticsearch,为了搜索

Elasticsearch学习笔记

搜索引擎solr和elasticsearch

使用 Elasticsearch 实现博客站内搜索

问题:

elasticsearch出现TranslogCorruptedException导致shard不能启动的问题修复

配置远程访问:

在服务器的es的config文件里面把network.host改为0.0.0.0

ES集群遇到的问题

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
input {
jdbc {
jdbc_driver_library => "/path/to/mysql-connector-java-5.1.33-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://host:port/database"
jdbc_user => "user"
jdbc_password => "password"
# or jdbc_password_filepath => "/path/to/my/password_file"
clean_run => false
use_column_value => true
tracking_column => BUG_ID
record_last_run => true
last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
lowercase_column_names => false
statement_filepath => "/etc/logstash/statement_file.d/my_info.sql"
schedule => "* * * * *"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
type => "es_type"
}
}
filter {
[some filters here]
}
output {
stdout {
codec => rubydebug
}
elasticsearch_http {
host => "host"
index => "es_index"
}
}
将不同类型的数据导入到elasticsearch中

如何将不同类型数据导入Elaticsearch中