zoukankan      html  css  js  c++  java
  • linux安装elasticsearch-head和elasticsearch-analysis-ik及遇到的各种问题

    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" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "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": [
                            "<tag1>中国</tag1>驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首 "
                        ]
                    }
                },
                {
                    "_index": "index",
                    "_type": "fulltext",
                    "_id": "3",
                    "_score": 2,
                    "_source": {
                        "content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
                    },
                    "highlight": {
                        "content": [
                            "均每天扣1艘<tag1>中国</tag1>渔船 "
                        ]
                    }
                }
            ]
        }
    }

     注意事项及遇到的问题

    1.显示集群健康值:未连接

    修改配置文件  vim /elasticsearch-5.6.3 /config/elasticsearch.yml  添加配置

    #如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求
    http.cors.enabled: true
    #如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处 http.cors.allowed.origin: "*"

     2.ik的

    在ik提供的案例中,第一步创建了索引后,第二步一直提示错误

    {
        "error": {
            "root_cause": [
                {
                    "type": "illegal_argument_exception",
                    "reason": "Mapper for [content] conflicts with existing mapping in other types:
    [mapper [content] has different [analyzer]]"
                }
            ],
            "type": "illegal_argument_exception",
            "reason": "Mapper for [content] conflicts with existing mapping in other types:
    [mapper [content] has different [analyzer]]"
        },
        "status": 400
    }

    从错误提示上来看是说要创建的映射已经存在了,问题的关键就在于我没有创建过叫index的索引.中文站是废了,最终老歪给出了回复,大致原因应该是我在创建了索引后,没有创建mapping前查询过该索引,那么es就会自动为该索引创建一个mapping.

    Elasticsearch 配置属性
    属性缺省值描述
    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 服务的逗号分隔列表。
    例如:
    discovery.zen.ping.unicast.hosts="localhost:9300,localhost:9301,localhost:9302

    有关更多信息,请参阅 Elasticsearch 文档

    discovery.zen.ping.timeout 3s Elastic 搜索节点等待加入 Elasticsearch 集群的时间。
  • 相关阅读:
    Java Message Service学习(一)
    二叉树的层序遍历算法实现
    二叉树的操作之统计二叉树中节点的个数
    java.uti.Random类nextInt方法中随机数种子为47的奇怪问题
    最大子序列和问题
    参数对象Struts2中Action的属性接收参数
    方法字段[C# 基础知识系列]专题二:委托的本质论
    struts2属性Struts2中属性接收参数中文问题和简单数据验证
    权限检查联系人ProfileProvider
    最小较小codeforces 2B The least round way
  • 原文地址:https://www.cnblogs.com/cnsdhzzl/p/9402419.html
Copyright © 2011-2022 走看看