Elasticsearch2.3安装教程

Elasticsearch安装教程

官网

官网安装指南
github

分词插件

.net客户端

本地离线文件:\qzdoc\DevSoft\elasticsearch

A. 安装步骤

A1、JDK jdk-8u77-windows-x64

A2、配置系统环境变量 JAVA_HOME 为 C:\Program Files\Java\jdk1.8.0_77 (如果不是安装在C盘,盘符请注意更改)

A3、解压 elasticsearch-2.3.1.zip ,用CMD命令行运行bin目录下面的 elasticsearch.bat

1.  C:\Users\Administrator>cd E:\soft\elasticsearch\elasticsearch-2.3.1\elasticsearch-2.3.1\bin
2.   
3.  C:\Users\Administrator>E:
4.   
5.  E:\soft\elasticsearch\elasticsearch-2.3.1\elasticsearch-2.3.1\bin>dir
6.   驱动器 E 中的卷是 Elasticsearch
7.   卷的序列号是 CC79-9420
8.   
9.   E:\soft\elasticsearch\elasticsearch-2.3.1\elasticsearch-2.3.1\bin 的目录
10.  
11. 2016/04/07  10:29    <DIR>          .
12. 2016/04/07  10:29    <DIR>          ..
13. 2016/04/04  12:23             5,551 elasticsearch
14. 2016/01/27  12:53           104,448 elasticsearch-service-mgr.exe
15. 2016/01/27  12:53           103,936 elasticsearch-service-x64.exe
16. 2016/01/27  12:53            80,896 elasticsearch-service-x86.exe
17. 2016/04/04  12:23               909 elasticsearch.bat
18. 2016/04/04  12:23             3,307 elasticsearch.in.bat
19. 2016/04/04  12:23             2,814 elasticsearch.in.sh
20. 2016/04/04  12:23             2,992 plugin
21. 2016/04/04  12:23             1,303 plugin.bat
22. 2016/04/04  12:23             6,501 service.bat
23.               10 个文件        312,657 字节
24.                2 个目录 135,808,548,864 可用字节
25.  
26. E:\soft\elasticsearch\elasticsearch-2.3.1\elasticsearch-2.3.1\bin>elasticsearch.bat
27. [2016-04-07 11:21:12,101][INFO ][node                     ] [Hardcore] version[2.3.1], pid[944], build[bd98092/2016-04-0
28. 4T12:25:05Z]
29. [2016-04-07 11:21:12,101][INFO ][node                     ] [Hardcore] initializing ...
30. [2016-04-07 11:21:13,085][INFO ][plugins                  ] [Hardcore] modules [reindex, lang-expression, lang-groovy],
31. plugins [], sites []
32. [2016-04-07 11:21:13,132][INFO ][env                      ] [Hardcore] using [1] data paths, mounts [[Elasticsearch (E:)
33. ]], net usable_space [126.4gb], net total_space [126.8gb], spins? [unknown], types [NTFS]
34. [2016-04-07 11:21:13,132][INFO ][env                      ] [Hardcore] heap size [910.5mb], compressed ordinary object p
35. ointers [true]
36. [2016-04-07 11:21:16,351][INFO ][node                     ] [Hardcore] initialized
37. [2016-04-07 11:21:16,351][INFO ][node                     ] [Hardcore] starting ...
38. [2016-04-07 11:21:16,788][INFO ][transport                ] [Hardcore] publish_address {127.0.0.1:9300}, bound_addresses
39.  {127.0.0.1:9300}, {[::1]:9300}
40. [2016-04-07 11:21:16,804][INFO ][discovery                ] [Hardcore] elasticsearch/QbxsMzlVQn64WMXmuzLWvA
41. [2016-04-07 11:21:20,883][INFO ][cluster.service          ] [Hardcore] new_master {Hardcore}{QbxsMzlVQn64WMXmuzLWvA}{127
42. .0.0.1}{127.0.0.1:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
43. [2016-04-07 11:21:20,992][INFO ][gateway                  ] [Hardcore] recovered [0] indices into cluster_state
44. [2016-04-07 11:21:21,195][INFO ][http                     ] [Hardcore] publish_address {127.0.0.1:9200}, bound_addresses
45.  {127.0.0.1:9200}, {[::1]:9200}
46. [2016-04-07 11:21:21,195][INFO ][node                     ] [Hardcore] started

A4、可以修改config下面的yml配置文件下的启动IP地址

A5、可以安装curl进行测试,

1.  解压curl-7.33.0-win64-ssl-sspi.zip到一个文件夹,设置系统环境变量  CURL_HOME E:\soft\elasticsearch\curl-7.33.0-win64-ssl-sspi (路径按照解压的路径)
2.  更改PAHT环境变量,加入%CURL_HOME%,记得和其他项分号隔开
3.  win平台下的curl记得用双引号代替官方测试说明的单引号(天坑);或者不用引号;插入json数据时特殊字符要转义,如:curl -XPUT localhost:9200/customer/external/1?pretty -d "{\"name\":\"John Doe\"}"

A6、编译IK分词插件

A6a.安装 apache-maven-3.3.9-bin.zip 解压文件,配置系统环境变量 M2_HOME C:\JavaEnv\apache-maven-3.3.9(按安装目录不同而不同)

1.  更改PAHT环境变量,加入C:\JavaEnv\apache-maven-3.3.9\bin(按安装目录不同而不同),记得和其他项分号隔开
2.  利用 cmd 输入命令 mvn -v 测试
3.   
4.  C:\Users\Administrator>mvn -v
5.  Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:4
6.  7+08:00)
7.  Maven home: C:\JavaEnv\apache-maven-3.3.9
8.  Java version: 1.8.0_77, vendor: Oracle Corporation
9.  Java home: C:\Program Files\Java\jdk1.8.0_77\jre
10. Default locale: zh_CN, platform encoding: GBK
11. OS name: "windows server 2012 r2", version: "6.3", arch: "amd64", family: "dos"

A6b. 解压elasticsearch-analysis-ik-master.zip到目录

A6c. 命令行转到解压后的目录,分别执行,执行过程中需要联网下载很多POM

1.  mvn clean
2.  mvn compile
3.  mvn package
4.   
5.  *compile*命令执行超久。。15分钟,操
6.  [INFO] ------------------------------------------------------------------------
7.  [INFO] BUILD SUCCESS
8.  [INFO] ------------------------------------------------------------------------
9.  [INFO] Total time: 15:48 min
10. [INFO] Finished at: 2016-04-07T14:18:10+08:00
11. [INFO] Final Memory: 24M/134M
12. [INFO] ------------------------------------------------------------------------
13.  
14. 执行打包后,成功信息如下
15. [INFO] Building zip: E:\soft\elasticsearch\elasticsearch-analysis-ik-master\target\releases\elasticsearch-analysis-ik-1.9.0.zip
16. [INFO] ------------------------------------------------------------------------
17. [INFO] BUILD SUCCESS
18. [INFO] ------------------------------------------------------------------------
19. [INFO] Total time: 02:05 min
20. [INFO] Finished at: 2016-04-07T14:21:44+08:00
21. [INFO] Final Memory: 23M/365M
22. [INFO] ------------------------------------------------------------------------

A6d. 安装插件

将编译好的zip文件编译好复制到elasticsearch安装的根目录下/plugins/ik,然后重启elasticsearch服务
重启服务中出现异常说IK插件版本不对

1.  PS E:\soft\elasticsearch\elasticsearch-2.3.1\bin> ./elasticsearch.bat
2.  [2016-04-07 14:34:18,322][INFO ][node                     ] [Ogre] version[2.3.1], pid[4392], build[bd98092/2016-04-04T12:25:05Z]
3.  [2016-04-07 14:34:18,322][INFO ][node                     ] [Ogre] initializing ...
4.  Exception in thread "main" java.lang.IllegalArgumentException: Plugin [analysis-ik] is incompatible with Elasticsearch [2.3.1]. Was designed for version [2.3.0]
5.      at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:118)
6.      at org.elasticsearch.plugins.PluginsService.getPluginBundles(PluginsService.java:378)
7.      at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:128)
8.      at org.elasticsearch.node.Node.<init>(Node.java:158)
9.      at org.elasticsearch.node.Node.<init>(Node.java:140)
10.     at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:143)
11.     at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:178)
12.     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
13.     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
14. Refer to the log for complete error details.

修改plugin-descriptor.properties中的elasticsearch.version=2.3.0到2.3.1临时解决问题。。
等以后有新版本再更新好了

B. 概念

B1. node

1.  为集群节点, 一般情况下一个node为一个独立计算机的elasticsearch分布索引计算实例,

B2. shard

1.  为索引分片,默认为每个节点5个主要分配,一个索引可能分布在一个或者多个分片当中,有些分片可能在其他节点, 在机器数量(node)有限的情况下,shard并不是越多越好,并行搜索多个分片会带来更高的IO,合并搜索结果也会带来更高的CPU

B3.replica shards

1.  为复制分片,为了提高建立索引的速度,第一次增量的时候可以设置复制分片为0,增量完成后再设置复制分片为1

B4. 以windows 服务来运行 elasticsearch

1.  官网提供说明
2.  c:\elasticsearch-{version}bin>service install
3.  Installing service      :  "elasticsearch-service-x64"
4.  Using JAVA_HOME (64-bit):  "c:\jvm\jdk1.8"
5.  The service 'elasticsearch-service-x64' has been installed.
6.   
7.  还有java虚拟机运行内存要单独在 serivce.bat 中设置
8.   
9.  打开管理UI
10. c:\elasticsearch-{version}bin>service manager 
11.  
12. 删除服务
13. c:\elasticsearch-{version}bin>service remove

官网引用地址

C. 配置

C1. 内存

1.  配置文件在bin目录下的 elasticsearch.in.bat 文件中, ES_MIN_MEM 为最小内存 默认为256m, ES_MAX_MEM 为最大内存 默认为1g, elasticsearch 官方建议最小内存和最大内存设置为一样,可以提高性能

C2. 网络地址

1.  配置文件为config目录下的 elasticsearch.yml 设置 network.host=ip地址  http.port: 9200 这个是配置运行端口,默认9200超出我们服务器防火墙公开端口范围,需要注意修改

C3. 集群搭建

1.  在测试的时候并没有发现节点可以自动发现内网中的其他节点,不过手动配置后可以了
2.  配置文件位于config目录下的 elasticsearch.yml 配置为 discovery.zen.ping.unicast.hosts: ["192.168.2.217", "192.168.1.180"]
3.  一旦启动新节点,会自动复制选举城主节点后的索引数据,如果索引数据很多,这个过程应该会挺慢的
4.  测试中down调某个节点,不会影响索引读取,客户端组件会自动路由失败请求到正常服务器,关掉的节点启动后会自动同步新索引。

C4 注意事项

1.  elasticsearch.yml 每一行配置(除了注释)前面必须有一个空格,那个空格不能删除,否则出问题

第三方中文详细参考

D. 测试

D1. curl 工具

可以使用 curl 进行测试,windows 下注意josn不能换行,还有不支持中文,可能默认传输GB2312的原因

windows 下可以用CMD命令执行curl, 注意使用双引号替代单引号,中间的双引号按反斜杠\转义,不支持换号

D1. Mapping

_id字段网上说可以 通过mapping映射为某个字段,实际上测试并不行, 可能早期的版本可以支持映射,但测试的
2.3.1版本并不行
但索引的model里可以设置一个ID标签映射

1.  [Nest.ElasticsearchType(IdProperty = "oc_code")]
2.  public class OrgCompanyCombine

D3. elasticsearch.net 客户端

客户端默认吞掉一般的异常,如要设置为抛出异常,需要设置 ConnectionSettings.ThrowExceptions(true);

还有未发现可以直接批量的更新操作方法

D4. 大坑

1、索引名称必须为小写

2、索引类型(实体名)必须小写

3、实体属性第一个字母必须是小写,否则会在mapping中自动出现一份新的字段

4、mapping 里的字段类型一旦有数据,基本不能修改,只能删除重建索引

5、mapping 里的类型可以单独新增

6、yml配置文件中某一行的配置文件必须前面必须留空格

7、单个实例配置的最大内存官方推荐不超过32GB,估计再大 java 的 GC 受不了,反而影响性能

原文地址:https://www.cnblogs.com/yinzhou/p/7479339.html