天天看点

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

一、安装elasticsearch

1,下载elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1.tar.gz
           

2,下载完成后解压,并且移动到 /usr/local 目录下

tar -zxvf elasticsearch-6.2.1.tar.gz
mv elasticsearch-6.2.1 /usr/local/
cd /usr/local/elasticsearch-6.2.1/
           

注意,elasticsearch是不能使用root用户启动的,所以需要创建新的用户和组,使用指定用户启动

3,创建用户和组

# 以root用户来 groupadd 添加一个用户组
groupadd elsearch 

# 添加一个用户,-g是在用户组下 -p是密码
useradd elsearch -g elsearch -p elsearch

# 修改elasticsearch-6.2.1 目录的所属组合用户为 elsearch 
chown -R elsearch:elsearch /usr/local/elasticsearch-6.2.1/
           

4,修改 elasticsearch.yml 配置文件

vim /usr/local/elasticsearch-6.2.1/config/elasticsearch.yml
           

找到 #network.host: 192.168.0.1 行,将注释打开,改成自己需要访问的机器ip,或者改成0.0.0.0允许所有ip访问

修改前

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

修改后

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

并且在文件最后面直接配置,允许跨域配置,安装可视化插件会用到

http.cors.enabled: true
http.cors.allow-origin: "*"
           
linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

5,使用elsearch身份启动es

runuser -u elsearch /usr/local/elasticsearch-6.2.1/bin/elasticsearch &
           

备注:在后面添加 & 符号表示后台启动

ElasticSearch启动错误处理方法:

[2019-09-27T14:43:43,591][INFO ][o.e.b.BootstrapChecks    ] [Gt7IdM2] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
           

1,修改 /etc/security/limits.conf 在最后面追加参数

vim /etc/security/limits.conf
           

最后追加配置

* soft nofile 65536
* hard nofile 65536

* soft nproc 4096
* hard nproc 4096
           

2,修改 /etc/sysctl.conf 文件 在最后追加参数

vim /etc/sysctl.conf 
           

最后追加配置

vm.max_map_count=655360
           

保存后执行命令

sysctl -p
           

启动完成后在浏览器输入 ip:9200 看到输出参数就表示es安装成功了

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
           

华为云服务器修改配置后还是出现以上问题参照下面链接解决:

https://www.huaweicloud.com/kunpeng/software/es.html

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

二、安装可视化界面插件elasticsearch-head-master

1,安装elasticsearch-head-master 依赖的node环境

下载

wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
           

解压,并移动到 /usr/local 目录下

tar -zxvf node-v4.4.7-linux-x64.tar.gz 
mv node-v4.4.7-linux-x64 /usr/local/
           

配置node环境变量

vim /etc/profile
           

在最后面追加配置

NODE_HOME=/usr/local/node-v4.4.7-linux-x64
NODE_PATH=$NODE_HOME/lib/node_modules
PATH=$NODE_HOME/bin:$NODE_PATH:$PATH
           

保存后执行命令

source /etc/profile
           

2,下载elasticsearch-head-master安装包

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
           

解压并移动到 /usr/local目录下

unzip master.zip
mv elasticsearch-head-master/ /usr/local/
           

备注:下载较慢可以使用命令将镜像设置成阿里镜像

npm config set registry http://registry.npm.taobao.org
           

进入到 elasticsearch-head-master 目录,因为elasticsearch-head-master是通过grunt启动的,所以需要安装grunt插件

cd /usr/local/elasticsearch-head-master/
npm install -g grunt-cli
npm install
           

3,启动elasticsearch-head-master

需要在head的目录下运行

cd /usr/local/elasticsearch-head-master/
grunt server &
           

启动成功后在浏览器输入 ip:9100就可以访问到页面了

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

es各个搜索条件含义:

match 搜索key会被分词,搜索的filed中的值是分了词,然后再匹配

term 精确匹配输入的参数(不使用分析器)

wildcard 没用过

prefix 前缀匹配

fuzzy 模糊匹配

range 范围匹配 匹配数值类型,比如说对于用户样本搜索,年龄范围在20~30之间的,就用range。

query_string 查询text类型的字段

text 文本类型,文本类型可以设置分词器属性

missing 是否存在该字段值 和exists反义

三、使用 elasticsearch-head 界面工具创建一个索引库与文档

1,创建索引库

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

索引栏点击新建索引,输入索引名称,点击OK,分片数和副本数默认就可以了

新建完成后就可以在列表看到刚刚新建的索引库了

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

2, 再复合查询里面新建索引库的文档信息

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

question_dev/doc/_mapping

question_dev:表示索引库名称

doc:文档名称

_mapping:关键字,表示索引库文档映射操作操作

完成后提交,再返回数据浏览,就能够看到刚刚新建的索引库文档字段了

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

文档创建数据:

{
  "properties": {
    "question_id": {
      "type": "integer"
    },
    "title": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_smart"
    },
    "answer": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_smart"
    },
    "type_ids": {
      "type": "text"
    },
    "create_time": {
      "format": "yyyy-MM-dd HH:mm:ss",
      "type": "date"
    }
  }
}
           

3,向文档里面添加数据

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

添加完成后再次返回数据浏览就能够查看到刚刚添加的数据了

linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

数据添加json

{
  "question_id": 1,
  "title": "String 是最基本的数据类型吗?",
  "answer": "<p>不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;</p><p>除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。</p>",
  "type_ids": "1",
  "create_time": "2019-03-25 16:20:50"
}
           

4,搜索文档,按照标题搜索

question_dev/doc/_search?q=title:今天你吃了吗
question_dev/doc/_search?q=title:数据类型
           
linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:
linux 安装 elasticsearch备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:

继续阅读