企业级搜索elasticsearch应用04-集群和常用插件安装

一。配置集群

    一个 Elasticsearch 集群至少包括一个节点和一个索引。或者它 可能有一百个数据节点、三个单独的主节点,以及一小打客户端节点——这些共同操作一千个索引(以及上万个分片)。

 1》配置集群名称  

  Elasticsearch 默认启动的集群名字叫 elasticsearch 。 你最好给你的生产环境的集群改个名字,
改名字的目的很简单, 就是防止某人的笔记本电脑加入了集群这种意外。简单修改成 elasticsearch_production 会很省心 
  以在你的 elasticsearch.yml 文件中修改:

cluster.name: elasticsearch_production
2》配置节点名称  

  同样,最好也修改你的节点名字。就像你现在可能发现的那样, Elasticsearch 会在你的节点启动的时候随机给它指定一个名字。你可能会觉得这很有趣,
  但是当凌晨 3 点钟的时候, 你还在尝试回忆哪台物理机是 Tagak the Leopard Lord 的时候,你就不觉得有趣了。
更重要的是,这些名字是在启动的时候产生的,每次启动节点, 它都会得到一个新的名字。这会使日志变得很混乱,因为所有节点的名称都是不断变化的。
这可能会让你觉得厌烦,我们建议给每个节点设置一个有意义的、清楚的、描述性的名字,同样你可以在 elasticsearch.yml 中配置:

node.name: elasticsearch_005_data

3》配置常用存放目录

 默认情况下, Elasticsearch 会把插件、日志以及你最重要的数据放在安装目录下。这会带来不幸的事故, 
如果你重新安装 Elasticsearch 的时候不小心把安装目录覆盖了。如果你不小心,你就可能把你的全部数据删掉了。
最好的选择就是把你的数据目录配置到安装目录以外的地方, 同样你也可以选择转移你的插件和日志目录。
 以更改如下: 
#数据文件目录 建议设置到多个目录 实现raid0备份
path.data: /path/to/data1,/path/to/data2 
# 日志文件目录
path.logs: /path/to/logs
# 插件安装目录
path.plugins: /path/to/plugins
4》配置最小节点数
  每个集群中 主节点负责保存数据节点的元数据和索引分发 所以同一时刻只能出现一个主节点 配置文件中配置的所有主节点会自动进行选举
选出真正的主节点 假设2个节点选举 发生脑裂互相无法连接 都有可能成为主节点 所以必须要所有配置的master节点中 必须要有一半以上的
节点确认并且选举出来的节点才是真正的主节点 

你可以在你的 elasticsearch.yml 文件中这样配置:

discovery.zen.minimum_master_nodes: 2
此设置应该始终被配置为 master 候选节点的法定个数。法定个数就是 ( master 候选节点个数 / 2) + 1 。 这里有几个例
如果你有 10 个节点(能保存数据,同时能成为 master),法定数就是 6 。
如果你有 3 个候选 master 节点,和 100 个 data 节点,法定数就是 2 ,你只要数数那些可以做 master 的节点数就可以了。
如果你有两个节点,你遇到难题了。法定数当然是 2 ,但是这意味着如果有一个节点挂掉,你整个集群就不可用了。 设置成 1 可以保证集群的功能,但是就无法保证集群脑裂了,像这样的情况,你最好至少保证有 3 个节点。

如果动态的添加了主节点个数 无需修改配置重启 可以通过rest来永久保存一下配置

PUT /_cluster/settings
{
    "persistent" : {
        "discovery.zen.minimum_master_nodes" : 2
    }
}
在elastic配置中有以下几种节点(https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html)

》》master节点(主节点)
    配置的所有master节点都是候选节点  master作用 用于控制索引的分片 复制等策略 配置为

node.master: true 
node.data: false 
node.ingest: false 
search.remote.connect: false 
》》data节点(数据节点)
   所有数据节点用于存储索引数据
node.master: false 
node.data: true 
node.ingest: false 
search.remote.connect: false 

》》Ingest node(管道节点)
  用于处理管道(参考http://blog.csdn.net/liaomin416100569/article/details/78769425)

node.master: false 
node.data: false 
node.ingest: true 
search.remote.connect: false 
》》Tribe node(客户端节点)

   用于控制什么样的文档处理请求 分发到哪个集群中处理

node.master: false 
node.data: false 
node.ingest: false 
search.remote.connect: false 

5》集群恢复配置

  想象一下假设你有 10 个节点,每个节点只保存一个分片,这个分片是一个主分片或者是一个副本分片,或者说有一个有 5 个主分片/1 个副本分片的索引。有时你需要为整个集群做离线维护(比如,为了安装一个新的驱动程序), 当你重启你的集群,恰巧出现了 5 个节点已经启动,还有 5 个还没启动的场景。
假设其它 5 个节点出问题,或者他们根本没有收到立即重启的命令。不管什么原因,你有 5 个节点在线上,这五个节点会相互通信,选出一个 master,从而形成一个集群。 他们注意到数据不再均匀分布,因为有 5 个节点在集群中丢失了,所以他们之间会立即启动分片复制。
最后,你的其它 5 个节点打开加入了集群。这些节点会发现 它们 的数据正在被复制到其他节点,所以他们删除本地数据(因为这份数据要么是多余的,要么是过时的)。 然后整个集群重新进行平衡,因为集群的大小已经从 5 变成了 10。
在整个过程中,你的节点会消耗磁盘和网络带宽,来回移动数据,因为没有更好的办法。对于有 TB 数据的大集群, 这种无用的数据传输需要 很长时间 。如果等待所有的节点重启好了,整个集群再上线,所有的本地的数据都不需要移动。

现在我们知道问题的所在了,我们可以修改一些设置来缓解它。 首先我们要给 ELasticsearch 一个严格的限制:

gateway.recover_after_nodes: 8
这将阻止 Elasticsearch 在存在至少 8 个节点(数据节点或者 master 节点)之前进行数据恢复。 这个值的设定取决于个人喜好:整个集群提供服务之前你希望有多少个节点在线?这种情况下,我们设置为 8,这意味着至少要有 8 个节点,该集群才可用。
现在我们要告诉 Elasticsearch 集群中 应该 有多少个节点,以及我们愿意为这些节点等待多长时间:
gateway.expected_nodes: 10
gateway.recover_after_time: 5m
这意味着 Elasticsearch 会采取如下操作:
  等待集群至少存在 8 个节点
  等待 5 分钟,或者10 个节点上线后,才进行数据恢复,这取决于哪个条件先达到。
这三个设置可以在集群重启的时候避免过多的分片交换。这可能会让数据恢复从数个小时缩短为几秒钟。
注意:这些配置只能设置在 config/elasticsearch.yml 文件中或者是在命令行里(它们不能动态更新)它们只在整个集群重启的时候有实质性作用。
6》最好使用单播代替组播
Elasticsearch 默认被配置为使用单播发现,以防止节点无意中加入集群。只有在同一台机器上运行的节点才会自动组成集群。
虽然组播仍然 作为插件提供, 但它应该永远不被使用在生产环境了,否在你得到的结果就是一个节点意外的加入到了你的生产环境,仅仅是因为他们收到了一个错误的组播信号。 对于组播 本身 并没有错,组播会导致一些愚蠢的问题,并且导致集群变的脆弱(比如,一个网络工程师正在捣鼓网络,而没有告诉你,你会发现所有的节点突然发现不了对方了)。
使用单播,你可以为 Elasticsearch 提供一些它应该去尝试连接的节点列表。 当一个节点联系到单播列表中的成员时,它就会得到整个集群所有节点的状态,然后它会联系 master 节点,并加入集群。

这意味着你的单播列表不需要包含你的集群中的所有节点, 它只是需要足够的节点,当一个新节点联系上其中一个并且说上话就可以了。如果你使用 master 候选节点作为单播列表,你只要列出三个就可以了。 这个配置在 elasticsearch.yml 文件中:(一般配置的是候选master列表)

discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
7》 实战配置

  模拟环境

192.168.58.147  master
192.168.58.149  master data 
192.168.58.150  master data
192.168.58.151  data ingest
添加账号
groupadd es;
useradd es -g es;  
passwd es  
之前 147已经安装 (http://blog.csdn.net/liaomin416100569/article/details/78716175)
scp -r ./elasticsearch-5.6.4 root@192.168.58.149:/home/es
scp -r ./elasticsearch-5.6.4 root@192.168.58.150:/home/es
scp -r ./elasticsearch-5.6.4 root@192.168.58.151:/home/es
147配置
cluster.name: my_cluster_name
node.name: node_147
network.host: 192.168.58.147
http.port: 9200
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 4
discovery.zen.ping.unicast.hosts: ["192.168.58.147", "192.168.58.149", "192.168.58.150"]
node.master: true 
node.data: false 
node.ingest: false 
search.remote.connect: false 
149配置
cluster.name: my_cluster_name
node.name: node_149
network.host: 192.168.58.149
http.port: 9200
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 4
discovery.zen.ping.unicast.hosts: ["192.168.58.147", "192.168.58.149", "192.168.58.150"]
node.master: true 
node.data: true 
node.ingest: false 
search.remote.connect: false 
150配置
cluster.name: my_cluster_name
node.name: node_150
network.host: 192.168.58.150
http.port: 9200
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 4
discovery.zen.ping.unicast.hosts: ["192.168.58.147", "192.168.58.149", "192.168.58.150"]
node.master: true 
node.data: true 
node.ingest: false 
search.remote.connect: false 
151配置
cluster.name: my_cluster_name
node.name: node_151
network.host: 192.168.58.151
http.port: 9200
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 4
discovery.zen.ping.unicast.hosts: ["192.168.58.147", "192.168.58.149", "192.168.58.150", "192.168.58.151"]
node.master: false 
node.data: true 
node.ingest: true 
search.remote.connect: false 
所有主机进入bin 执行启动命令 ./elasticsearch 147上报错
[2017-12-10T19:53:31,079][WARN ][o.e.d.z.ZenDiscovery     ] [my_node_name] not enough master nodes discovered during pinging (found [[Candidate{node={my_node_name}{jRy-sXoCRP6bywdHcptjcA}{9uIaSSb7SEWx4AP6R_crTw}{192.168.58.147}{192.168.58.147:9300}, clusterStateVersion=-1}]], but needed [2]), pinging again
因为忘记设置 149-151上所有资源限制的所有 必须要有4个节点ping通才能启动
设置内核参数和ulimit参考 文章01
注意一点是 elasticsearch根目录下的data目录需要清除 因为有之前147的单机数据 否则无法连接的
查看所有节点数
http://192.168.58.150:9200/_cat/nodes?v   可以看到147被选举成了master

ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.58.150            3          96   0    0.05    0.35     0.48 md        -      node_150
192.168.58.149            3          96   0    0.10    0.32     0.43 md        -      node_149
192.168.58.147            4          96   3    0.09    0.32     0.39 m         *      my_node_name
192.168.58.151            3          97   0    0.00    0.26     0.36 di        -      node_151
查看集群状态
http://192.168.58.147:9200/_cluster/health

打印json

{"cluster_name":"my_cluster_name","status":"green","timed_out":false,"number_of_nodes":4,"number_of_data_nodes":3,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}
监控命令 参考(https://www.elastic.co/guide/cn/elasticsearch/guide/current/_cluster_health.html)
如果部署多个集群 并且需要跨集群搜索 参考官网(https://www.elastic.co/guide/en/elasticsearch/reference/5.6/modules-cross-cluster-search.html)

二。监控插件X-pack安装

X-Pack是一个Elastic Stack的扩展,将安全,警报,监控,报告和图形功能包含在一个易于安装的软件包中 licence是收费的 所以目前来说

 找任意一台机器(这里使用 58.147)安装kabana(监控图形界面) 下载的版本和elasticsearch对应

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.4-linux-x86_64.tar.gz
切换到es账户下 解压到根目录 /home/es下
kabana安装x-pack插件 用于收集集群的性能信息
bin/kibana-plugin install x-pack
100多M 可以先window下载下载传上去 (安装过程比较慢)
 wget https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.6.4.zip
bin/kibana-plugin install file://home/es/x-pack-5.6.4.zip
修改kibana的config目录下kibana.yml文件 设置对应监听端口的ip和性能监控的es的http地址

server.host: "192.168.58.147"
elasticsearch.url: "http://192.168.58.147:9200"
elasticsearch需要安装x-pack插件用于收集性能信息 
4台es机器安装 x-pack(参考https://www.elastic.co/guide/en/elasticsearch/reference/current/installing-xpack-es.html)
./elasticsearch-plugin install x-pack --batch
安装过程提示如下
[es@node2 bin]$ ./elasticsearch-plugin install x-pack --batch
-> Downloading x-pack from elastic
[=================================================] 100%   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission \\.\pipe\* read,write
* java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission setFactory
* java.security.SecurityPermission createPolicy.JavaPolicy
* java.security.SecurityPermission getPolicy
* java.security.SecurityPermission putProviderProperty.BC
* java.security.SecurityPermission setPolicy
* java.util.PropertyPermission * read,write
* java.util.PropertyPermission sun.nio.ch.bugLevel write
* javax.net.ssl.SSLPermission setHostnameVerifier
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@        WARNING: plugin forks a native controller        @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
This plugin launches a native controller that is not subject to the Java
security manager nor to system call filters.
-> Installed x-pack
重启 elastic集群中四台主机 
147上启动 kibana
bin\kibana
浏览器访问 http://192.168.58.147:5601 输入默认用户名(elastic)和密码(changeme)

点击左侧 菜单Monitoring

点击Node4进入就可以看到具体节点信息 可以cpu内存监控

kabana使用es存储监控信息系统 查看es集群的索引库 

[root@node1 ~]# curl -uelastic:changeme -XGET http://192.168.58.147:9200/_cat/indices?v          
health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .watcher-history-6-2017.12.12   g5kAtzgCQL2TZ0QJSltepQ   1   1         32            0    241.4kb        192.4kb
green  open   .triggered_watches              crH-qGoIQRWs4piJb_9NXw   1   1          0            0       324b           162b
green  open   .monitoring-kibana-6-2017.12.11 kxUeQrmvQx6HyPHgT3tynw   1   1        101            0    189.9kb         94.9kb
green  open   .watcher-history-6-2017.12.11   IrahxNKQT-WzCIqTtZOnMw   1   1        212            0    505.1kb        252.5kb
green  open   .monitoring-es-6-2017.12.12     o2rvrPpMReOg6IloNksZnQ   1   1        982            0      1.6mb        909.9kb
green  open   .kibana                         lry-GKJXTQ6TYuKv7iOZKg   1   1          1            0      7.7kb          3.8kb
green  open   .monitoring-es-6-2017.12.11     orcNrMt8ReqX6kD2MKAvJg   1   1       3783            0      5.5mb          2.7mb
green  open   .watches                        q5HpuApsQpmyESJwoZaKjw   1   1          4            0     61.7kb         30.8kb
xpack默认的licence只有1个月的试用期 查看kabana启动日志

查看elasticesearch (http://192.168.58.147:9200/_license)1月份就过期了 尝试反编译jar包破解

{
  "license" : {
    "status" : "active",
    "uid" : "b9e358e1-a296-488c-ae7a-b95bcd683ae7",
    "type" : "trial",
    "issue_date" : "2017-12-11T08:37:47.039Z",
    "issue_date_in_millis" : 1512981467039,
    "expiry_date" : "2018-01-10T08:37:47.039Z",
    "expiry_date_in_millis" : 1515573467039,
    "max_nodes" : 1000,
    "issued_to" : "my_cluster_name",
    "issuer" : "elasticsearch",
    "start_date_in_millis" : -1
  }
}

三。监控插件 elasticsearch-head安装

   elasticsearch-head是一个web前端的es集群监控软件 开源代码位于https://github.com/mobz/elasticsearch-head

该插件不建议在es中直接使用插件安装  而是独立安装 使用nodejs开发 必须安装nodejs环境
 

 安装主机 (192.168.58.152)
 
 nodejs默认在epel仓库中 需要先安装epel库
yum -y install epel-release.noarch
安装nodejs
yum -y install nodejs
需要安装git下载head插件代码
yum -y install git
下载代码
git clone git://github.com/mobz/elasticsearch-head.git
进入目录使用npm安装(偶尔安装速度很慢 最好启动过墙软件)
cd elasticsearch-head/ && npm install
启动head(npm run start)
[root@bogon elasticsearch-head]# npm run start

> elasticsearch-head@0.0.0 start /root/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
此时可以使用浏览器访问 http://ip:9100

默认elasticsearch 最上面的文本框 连接的http://localhost:9200 我的es安装在147主机上 所以连接时浏览器console报错
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_nodes/stats. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_stats. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_nodes. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_cluster/state. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_cluster/health. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_stats. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_nodes/stats. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_all. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_cluster/state. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_nodes. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_cluster/health. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
VM36:1 XMLHttpRequest cannot load http://192.168.58.147:9200/_all. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.58.152:9100' is therefore not allowed access.
app.js:1307 
Object {XHR Error: "error", message: ""}
分析原来是head使用的http的ajax跨域请求 所以必须让es的http协议允许跨域访问才能获取结果 修改elasticesearch配置文件添加
http.cors.enabled: true
http.cors.allow-origin: "*"
重启elasticsearch 重新访问elasticsearch-head 在最上面的文本框添加http://192.168.58.147:9200即可访问 比如测试head上类似于sense的查询编辑器

类似的开源nodejs的监控插件还有kopf  具体安装参考github官网https://github.com/lmenezes/elasticsearch-kopf 

四。SQL语法操作es插件Elasticsearch-SQL

   如果熟悉结构数据库 发现json的index相当于表 documen类似于单行的数据  field相当于数据库的列 该插件地址(https://github.com/NLPchina/elasticsearch-sql)
安装的es版本是5.6.4 es-sql选择5.6.4版本 使用es的插件安装
 进入elasticsearch根目录
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.6.4.0/elasticsearch-sql-5.6.4.0.zip
添加测试数据
curl -XPUT '192.168.58.147:9200/user/info/1' -d '	
{"country":"中国","provice":"广东省","city":"广州市","age":"89","name":"王冠宇","desc":"王冠宇是王五的儿子"}
';  
使用命令行操作sql(select* from 索引)
http://192.168.58.147:9200/_sql?sql=select * from user
结果
{"took":364,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"user","_type":"info","_id":"1","_score":1.0,"_source":
{"country":"中国","provice":"广东省","city":"广州市","age":"89","name":"王冠宇","desc":"王冠宇是王五的儿子"}
}]}}
如果觉得在浏览器地址栏 敲入地址不方便 可以下载 es-sql web前端客户端 开始下载:
wget https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip
解压
unzip es-sql-site-standalone.zip
安装过程 先安装nodejs 参考 章节三
编辑解压目录 _site/controller.js 将 localhost:9200 替换成你的es httpd地址 我的是 192.168.58.147:9200
进入site-server目录
cd site-server
安装启动
npm install express --save 
node node-server.js 
默认开启了 8080端口 使用浏览器启动执行sql语句

其他sql语法参考github官网(https://github.com/NLPchina/elasticsearch-sql)

转载于:https://www.cnblogs.com/liaomin416100569/p/9331154.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值