zoukankan      html  css  js  c++  java
  • 企业级搜索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
    binkibana
    浏览器访问 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)

  • 相关阅读:
    hdu 4162 Shape Number 最小表示法
    codeforces 416B. Appleman and Tree 树形dp
    codeforces 167B . Wizards and Huge Prize 概率dp
    codeforces 617E. XOR and Favorite Number 莫队
    angularJs问题:获取按钮 token < 80 8888 localhost:63342 统一字母大小写
    移动端页面布局需要注意的一些问题
    jqm(jquery mobile)做页面中出现诡异的&nbsp;
    页面中出现诡异的双引号""
    js、jq不能正常执行
    hdu 1874 畅通工程(spfa 邻接矩阵 邻接表)
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331154.html
Copyright © 2011-2022 走看看