1.获取elasticsearch-head
http://mobz.github.io/elasticsearch-head/
下载并解压
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip
2.安装node,使用head 插件,需要node.js的支持,所以先安装node.js
下载并解压
wget https://npm.taobao.org/mirrors/node/latest-v9.x/node-v9.0.0-linux-x64.tar.gz
tar -zxvf tar -zxvf node-v9.0.0-linux-x64.tar.gz
配置环境变量
vim /etc/profile
#添加
export NODE_HOME=/usr/local/node-v9.0.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin/
export NODE_PATH=$NODE_HOME/lib/node_modules
3.安装
npm install
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
v9.0.0
4.安装中文分词插件ik
下载并解压至elasticsearch的插件目录下
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip
unzip elasticsearch-analysis-ik-6.3.2.zip
5.启动
启动elasticsearch
sh ./elasticsearch-6.3.2/bin/elasticsearch -d
启动node插件
npm run start
效果
安装elasticsearch-analysis-ik中文分词插件
1.在elasticsearch下的plugins文件夹中创建ik文件夹 下载并解压ik至
mkdir ik
2.下载并解压ik到ik文件夹
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip unzip elasticsearch-analysis-ik-6.3.2.zip -d /elasticsearch-6.3.2/plugins/ik
3.重启elasticsearch,可以看到启动信息中有加载插件ik
4.测试ik提供的简单案例
1.create a index curl -XPUT http://localhost:9200/index 2.create a mapping curl -XPOST http://localhost:9200/index/fulltext/_mapping -H 'Content-Type:application/json' -d' { "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } }' 3.index some docs curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d' { "content":"美国留给伊拉克的是个烂摊子吗"} ' curl -XPOST http://localhost:9200/index/fulltext/2 -H 'Content-Type:application/json' -d' { "content":"公安部:各地校车将享最高路权"} ' curl -XPOST http://localhost:9200/index/fulltext/3 -H 'Content-Type:application/json' -d' { "content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"} ' curl -XPOST http://localhost:9200/index/fulltext/4 -H 'Content-Type:application/json' -d' { "content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"} ' 4.query with highlighting curl -XPOST http://localhost:9200/index/fulltext/_search -H 'Content-Type:application/json' -d' { "query" : { "match" : { "content" : "中国" }}, "highlight" : { "pre_tags" : ["", " "], "post_tags" : ["", ""], "fields" : { "content" : {} } } } ' Result { "took": 14, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 2, "max_score": 2, "hits": [ { "_index": "index", "_type": "fulltext", "_id": "4", "_score": 2, "_source": { "content": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首" }, "highlight": { "content": [ " 中国 驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首 " ] } }, { "_index": "index", "_type": "fulltext", "_id": "3", "_score": 2, "_source": { "content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船" }, "highlight": { "content": [ "均每天扣1艘中国 渔船 " ] } } ] } }
注意事项及遇到的问题
1.显示集群健康值:未连接
修改配置文件 vim /elasticsearch-5.6.3 /config/elasticsearch.yml 添加配置
#如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求
http.cors.enabled: true
#如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处
http.cors.allowed.origin: "*"
在ik提供的案例中,第一步创建了索引后,第二步一直提示错误
{ "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Mapper for [content] conflicts with existing mapping in other types:\n[mapper [content] has different [analyzer]]" } ], "type": "illegal_argument_exception", "reason": "Mapper for [content] conflicts with existing mapping in other types:\n[mapper [content] has different [analyzer]]" }, "status": 400 }
从错误提示上来看是说要创建的映射已经存在了,问题的关键就在于我没有创建过叫index的索引.中文站是废了,最终老歪给出了回复,大致原因应该是我在创建了索引后,没有创建mapping前查询过该索引,那么es就会自动为该索引创建一个mapping.
属性 | 缺省值 | 描述 |
---|---|---|
cluster.name | federated_cluster | Elasticsearch 集群名称。使用集群可将单独 Process Federation Server 绑定到单个分布式系统中。参与集群的所有服务器都必须具有相同的集群名称。 |
node.name | node1 | Elasticsearch 节点名。集群中的每个 Process Federation Server 都必须具有唯一节点名。 |
node.master | true | 指示某个节点是否符合成为主节点的条件。主节点管理 Elasticsearch 集群的状态。在运行时,Elasticsearch 服务会自动提名某一个合格的集群成员成为主节点。 仅当您想要对专用主节点和数据节点采用高级配置时,才将该值设置为 false。此类型的配置并不常用。 |
node.data | true | 指示节点是否为数据节点。数据节点包含并管理索引的一部分。 仅当您想要对专用主节点和数据节点采用高级配置时,才将该值设置为 false。此类型的配置并不常用。 |
http.enabled | false | 指示是否为 Elasticsearch 服务启用 HTTP。如果您要通过使用 Elasticsearch REST 请求来直接查询 Elasticsearch 数据,那么可以启用 HTTP 端口。
限制:Elasticsearch HTTP 端口不支持安全连接。
|
htttp.port | 9200 | 如果启用了 HTTP 端口,那么此属性指定由 Elasticsearch 服务使用的端口。 |
http.cors.enabled | true | 如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。 |
http.cors.allowed.origin | localhost | 如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。 |
transport.tcp.port | 9300 | 用于某个集群中 Elasticsearch 节点之间的通信的端口。 |
discovery.zen.minimum_master_nodes | 1 | 指示某个集群定额所需的 Process Federation Server 的数量。 缺省值为 1 表示单服务器环境。对于生产环境,请将该值设置为组成定额所需的 Process Federation Server 的数量。例如,如果在集群中总计有三个 Process Federation Server,请将该值设置为“2”,如果在集群中总计有五个 Process Federation Server,请将该值设置为“3”。 有关更多信息,请参阅 Elasticsearch 文档。 |
discovery.zen.ping.multicast.enabled | false | 通过发送节点所接收和响应的一个或多个多点广播请求来提供对其他 Elasticsearch 服务节点的多点广播 ping 发现功能。有关更多信息,请参阅 Elasticsearch 文档。 |
discovery.zen.ping.unicasts.hosts | localhost | 提供其他 Elasticsearch 服务节点的单点广播发现功能。配置集群中基于主机 TCP 端口的其他 Elasticsearch 服务的逗号分隔列表。
例如:
有关更多信息,请参阅 Elasticsearch 文档 。 |
discovery.zen.ping.timeout | 3s | Elastic 搜索节点等待加入 Elasticsearch 集群的时间。 |