前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch学习随笔

Elasticsearch学习随笔

作者头像
用户8483969
发布2021-04-09 11:32:32
1.9K0
发布2021-04-09 11:32:32
举报
文章被收录于专栏:bgmonkeybgmonkeybgmonkey

Elasticsearch入门笔记

1、安装Elasticsearch

下载elasticsearch7.8.0

## 下载elasticsearch7.8.0安装包,推荐使用华为云镜像下载速度快
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
elasticsearch-analysis-ik: https://github.com/medcl/elasticsearch-analysis-ik/releases

安装elasticsearch 使用非root用户、root用户不能启动elasticsearch

## 解压、配置环境变量 并进入elasticsearch目录下
cd /usr/elasticsearch
## 新建data文件夹和logs文件夹
mkdir data
mkdir logs

修改配置文件

## 修改elasticsearch.yml 
vim elasticsearch.yml 

## 修改内容:
cluster.name: elasticsearch
node.name: node1
path.data: /usr/elasticsearch/data
path.logs: /usr/elasticsearch/logs
http.port: 9200
network.host: master
cluster.initial_master_nodes: ["node1"]

## 修改jvm.options 
vim jvm.options 
修改-Xms1g 为 -Xms128m
修改-Xmx1g 为 -Xmx128m
## 因为是在虚拟机进行安装的ES,所以内存不是很大建议修改一下。若是生产环境不用修改。

运行

su hadoop ## 切换到非root用户
elasticsearch ## 启动es(前台启动)
elasticsearch -d ## 启动es(后台启动)

Web UI界面

master:9200

2、安装Head插件

0、最简单办法

谷歌插件安装es-head

## 谷歌应用商店地址:
https://chrome.google.com/webstore/category/extensions
## 搜索elasticsearch head安装即可

下载head的zip包

## 下载地址
https://github.com/mobz/elasticsearch-head

## 上传到服务器并解压
unzip elasticsearch-head-master.zip
mv ./elasticsearch-head-master /usr/elasticsearch

注意: Head插件不能放在ES的 plugins、modules目录下,否则ES启动会报错、这里我们放到/usr/elasticsearch目录下

1、安装node.js(如已安装可略过)

Head插件是依赖于node.js的。接下来先安装node.js

## 下载地址(中文网)速度较快
http://nodejs.cn/download/
## 下载linux版本,上传服务器并解压
tar xf node-v14.15.0-linux-x64.tar.xz
## 配置环境变量
/usr/node
## 测试
node -v
出现版本号即安装成功

2、升级gcc7.1(如无需升级则略过)

测试时可能会报错

在这里插入描述
在这里插入描述
## 报错信息:version `GLIBC_2.16' not found (required by node)
GLIBCXX  版本最高是13,而上面的错误信息中的14  15  18   没有,需要升级一下
# 下载gcc-7.1(有网盘链接)
## 链接:https://pan.baidu.com/s/1l0aqh4ZetlCn0YBLz7k4hA 提取码:nnxa 
wget http://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.bz2
## 解压 并进入
tar -jxvf gcc-7.1.0.tar.bz2
cd gcc-7.1.0
## 下载依赖库(时间大概二十分钟)
./contrib/download_prerequisites 
## 建立编译输出目录
mkdir gcc-temp
## 生成makefile文件
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib  
## 编译(j为核心数,速度会更快,这步极为耗时)
make -j4

## 安装命令
make install

## 如不报错则至此安装成功,一般程序安装在 /usr/local/bin/ 目录下

==注意:==执行make j4 的时候最后可能会报错:make[1]: *** [stage1-bubble] Error 2 make[1]: 报错后执行如下命令后再执行make j4,最后没有Error则继续执行下一步 安装命令 yum install -y glibc-headers gcc-c++

替换当前gcc版本 :

## 倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc 40
## 将原本的gcc重命名(删除亦可)
mv /usr/bin/gcc /usr/bin/gcc.bak 
## 软连接使用gcc7.1版本
ln -s /usr/local/bin/x86_64-pc-linux-gnu-gcc /usr/bin/gcc        

## 当前版本位于/usr/bin/gcc,执行以下命令验证
gcc -v
gcc 版本 7.1.0 (GCC)
## 版本显示为 7.1.0则升级成功!

3、升级GLIBCXX(如无需升级则略过)

继续如下操作,升级GLIBCXX

## 查看版本 现在为老版本
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
## 进入老版本并移除
cd /usr/lib64 
rm -rf libstdc++.so.6
## 将新版本复制到当前目录
cp /usr/local/lib64/libstdc++.so.6  ./

?思考:为什么要复制到当前目录

发现这个里面正是最新版本的动态库,可见,在升级gcc时,gcc编译会在gcc-temp目录中生成libstdc++.so.6,升级完毕,默认只会在/usr/local/lib64目录下包含最新的libstdc++.so.6动态库,而不会更新/usr/lib64目录下的libstdc++.so.6。而执行程序时,程序会优先从/usr/lib64目录下去寻找libstdc++.so.6,由于老版本的gcc在/usr/lib64中有一个旧版本的动态库libstdc++.so.6,导致程序以为自己找到了正确的动态库,实际上找到的却不是最新的
## 查看版本
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
## GLIBCXX最高版本23,满足要求了。再次运行node -v验证
## 此时继续报错

4、升级GLIBC(如无需升级则略过)

升级GLIBC版本,最高要求是17,我选择了17版本的,可以选更高点的 (已存网盘) ==链接:==https://pan.baidu.com/s/1Ax6AgtVTLMvLJOcccNM8Ww 提取码:13kx

## 解压
tar -xvf  glibc-2.17.tar.gz
## 创建目录并进入
mkdir glibc-build-2.17
cd glibc-build-2.17
## 执行安装
../glibc-2.17/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install

## 查看版本
strings /lib64/libc.so.6|grep GLIBC
GLIBC版本最高已达17,满足要求了
## 运行测试、看见版本号即成功 
node -v
npm -v

5、继续安装Head插件

Grunt: 简而言之就是运行在node.js上面的任务管理器(task runner),其可以在任何语言和项目中自动化指定的任务,可通过npm来安装Grunt。是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,6.0里的Head插件就是通过Grunt启动的。因此还需要安装一下Grunt

## 首先切换至/usr/elasticsearch/elasticsearch-head-master目录下,并执行如下命令
cd /usr/elasticsearch/elasticsearch-head-master
npm install -g grunt-cli
## 上述命令执行后再执行如下命令,执行完后会生成一个node_modules目录
npm install
## 安装过程中可能会报缺少依赖的error,缺少哪个自行安装哪个即可
##至此安装成功

Head配置

## 1、修改服务器监听地址,增加hostname属性,
vim /usr/elasticsearch/elasticsearch-head-master/Gruntfile.js
修改为 hostname:'*',
## 修改head的连接地址,将localhost修改为ES的服务器地址(文件内容较多,建议打开文件通过查找关键字定位,如下图所示)
vim /usr/elasticsearch/elasticsearch-head-master/_site/app.js

6、启动Head

## 前台启动,先进入到head插件目录下
cd /usr/elasticsearch/elasticsearch-head-master
grunt server
## 后台启动
cd /usr/elasticsearch/elasticsearch-head-master
nohup grunt server &exit

此时访问es-head的Web UI界面显示未连接 由于ES进程和客户端进程端口号不同,存在跨域问题,所以我们要在ES的配置文件中配置下跨域问题:

## 进到elasticsearch的config目录下
cd /usr/elasticsearch/config
vim ./elasticsearch.yml
## 在最后添加如下配置信息
#跨域配置:
http.cors.enabled: true 
http.cors.allow-origin: "*"

:happy: 此时重新启动则正常

7、新建索引后集群健康状态为yellow

新建索引后如果健康状态为yellow则要检查是否新建的索引副本数大于elasticsearch的节点数,副本数应小于es的节点数

3、安装Kibana插件

安装、修改配置、启动

## 解压
## 位置随意,为了方便查找,将es的插件统一放到elasticsearch目录下
## 修改配置
cd /usr/elasticsearch/kibana/config
vim kibana.yml
server.host: "master"
elasticsearch.hosts: ["http://master:9200"]
elasticsearch.preserveHost: true
## 启动kibana(后台启动)
nohup ./bin/kibana &

kibana配置文件说明

server.port: 默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。
server.host: 默认值: "localhost" 指定后端服务器的主机地址。限制可访问的ip地址
server.name: 默认值: "您的主机名" Kibana 实例对外展示的名称。
server.defaultRoute: 默认值: "/app/kibana" Kibana 的默认路径,该配置项可改变 Kibana 的登录页面。
elasticsearch.url: 默认值: "http://localhost:9200" 用来处理所有查询的 Elasticsearch 实例的 URL 。
elasticsearch.preserveHost: 默认值: true 该设置项的值为 true 时,Kibana 使用 server.host 设定的主机名,该设置项的值为 false 时,Kibana 使用主机的主机名来连接 Kibana 实例。(域名控制)
kibana.index: 默认值: ".kibana" Kibana 使用 Elasticsearch 中的索引来存储保存的检索,可视化控件以及仪表板。如果没有索引,Kibana 会创建一个新的索引。
kibana.defaultAppId: 默认值: "discover" 默认加载的应用。
elasticsearch.username: 和 elasticsearch.password:  Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。
pid.file: 指定 Kibana 的进程 ID 文件的路径。
logging.dest: 默认值: stdout 指定 Kibana 日志输出的文件。
logging.silent: 默认值: false 该值设为 true 时,禁止所有日志输出。
logging.quiet: 默认值: false 该值设为 true 时,禁止除错误信息除外的所有日志输出。
logging.verbose: 默认值: false 该值设为 true 时,记下所有事件包括系统使用信息和所有请求的日志。
ops.interval: 默认值: 5000 设置系统和进程取样间隔,单位微妙,最小值100。

kibana配置中文

中文包在 kibana\x-pack\plugins\translations\translations\zh-CN.json
## 修改配置文件 kibana.yml 
i18n.locale: "zh-CN"

## 重启kibana即可成功

4、安装es-sql插件

0、安装web服务最简单办法

谷歌插件安装es-sql

## 安装包已上传至网盘
链接:https://pan.baidu.com/s/17RNZOnTsHjMsNWMDrk3CxA 提取码:gi2x 
## 解压
## 打开谷歌浏览器进入扩展程序 并打开开发者模式
chrome://extensions/
## 点击左上角"加载已解压的扩展程序"
## 选择刚刚解压的文件夹即可

下载安装 ==注意:==插件版本需要与es版本对应 ==地址:==https://github.com/NLPchina/elasticsearch-sql/

1、下载安装

## 下载及安装

## 进入elasticsearch目录下
cd /usr/elasticsearch
## 执行命令等待安装完毕
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/7.8.0.0/elasticsearch-sql-7.8.0.0.zip

2、下载页面需要的node.js文件

wget https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip
## 解压
unzip es-sql-site-standalone.zip
## 进入site-server文目录
cd /usr/elasticsearch/site-server
## 执行如下操作
npm install express --save
## 启动命令
node node-server.js

elasticsearch-sql的默认端口是8080,可以在site-server/site_configuration.json文件中进行修改 然后 打开 http://localhost:8080/ 访问插件 注意修改右上角本地elasticsearch的地址,sql脚本不需要以分号“;”结尾,如果一个index有多个type,表名用indexName/typeName表示

5、Restful 风格语法

method

url地址

描述

PUT

localhost:9200/索引名称/类型名称/文档id

创建文档(指定文档id)

POST

localhost:9200/索引名称/类型名称

创建文档(随机文档id)

POST

localhost:9200/索引名称/类型名称/文档id/_update

修改文档

DELETE

localhost:9200/索引名称/类型名称/文档id

删除文档

GET

localhost:9200/索引名称/类型名称/文档id

查询文档通过文档id

POST

localhost:9200/索引名称/类型名称/_search

查询所有数据

数据类型

## 字符串类型
text 、 keyword
## 数值类型
long, integer, short, byte, double, float, half_float, scaled_float
## 日期类型
date
## te布尔值类型
boolean
## 二进制类型
binary
等等......

// PUT 创建索引 demo1索引 member类型 1 id

1、增

1、创建索引

创建索引

## 创建索引 
PUT /demo1

## 创建索引指定设置:分片和副本
PUT /demo1
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  }
}

创建索引 指定type及字段 es7之后不建议自定义type,如需指定则需要include_type_name=true

## 指定type及字段 es7之后不建议自定义type,如需指定则需要include_type_name=true
PUT demo1?include_type_name=true
{
 "settings":{
   "number_of_shards":3,
   "number_of_replicas":0
 },
 "mappings":{
   "member":{
     "properties":{
       "name":{"type":"text"},
       "age":{"type":"text"},
       "country":{"type":"text"},
       "date":{"type":"date"}
     }
   }
 }
}

在索引中新增字段。结果可用get demo1/_mapping来查看,该字段下有数据时才能在head中查看到 我们使用PUT方法,后面跟随我们的索引名称,再接上_mapping,请求体中是我们新添加的映射字段,我们指定了字段的类型为keyword index索引为false,说明这个字段只用于存储,不会用于搜索,搜索这个字段是搜索不到的。

PUT demo1/_mapping
{
  "properties": {
    "member_id": {
      "type": "keyword",
      "index": false
    }
  }
}

2、插入数据

put方式插入 需要手动指定id,切id不重复,如果id重复则为覆盖

## 新增字段前
PUT demo1/member/2
{
  "member":"shifafa",
  "age":"18",
  "country":"china",
  "date":"2020-10-12"
}

## 新增字段后
PUT demo1/member/3
{
  "member":"shifafa",
  "age":"18",
  "country":"china",
  "date":"2020-10-12",
  "member_id":"0001"
}

2、删

1、删除索引

DELETE /demo
## 返回结果
{"acknowledged" : true}

2、删除数据

根据id删除

DELETE /demo1/member/2

3、改

1、索引相关

修改索引的设置

PUT demo1/_settings
{
  "number_of_replicas": 2
}

2、数据相关

更新数据POST 我们使用POST命令,在 id 后面跟 _update,要修改的内容放到doc 文档(属性)中即可。

POST demo1/member/3/_update
{
  "doc":{
    "member":"simple"
  }
}

4、查

1、查看索引情况

## 查看我们所有索引的状态健康情况 分片,数据储存大小等等。
GET _cat/indices?v

2、条件查询

条件查询 _search?q=

GET demo1/member/_search?q=member:simple

构建查询

GET demo1/member/_search
{
  "query":{
    "match": {
      "member": "simple"
    }
  }
}

查询全部(两种方式)

## 简单粗暴方法
GET demo1/member/_search

## 类似select * 方法
## match_all的值为空,表示没有查询条件,就像select * from table_name一样。
GET demo1/member/_search
{
  "query":{
    "match_all": {}
  }
}

? 如果有个需求,我们仅是需要查看 member age 两个属性,其他的不要如何操作

GET demo1/member/_search
{
  "query":{
    "match_all": {}
  },
  "_source":["member","age"]
}

3、排序查询

在条件查询的基础上,我们又通过sort 来做排序,排序对象是 age , orderdesc降序,asc是升序。

## 降序
GET demo1/member/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ]
}

## 升序
GET demo1/member/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ]
}

4、分页查询

“from”: 0, # 从第n条开始 、 “size”: 1 # 返回n条数据

## 有始有终写法
GET demo1/member/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "date": {
        "order": "asc"
      }
    }
  ],
  "from":0, # 从第n条开始
  "size":2  # 返回n条数据
}

## limit写法
GET demo1/member/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "date": {
        "order": "asc"
      }
    }
  ],
  "size":2  # 此时size就相当于limit
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Elasticsearch入门笔记
  • 1、安装Elasticsearch
  • 2、安装Head插件
    • 0、最简单办法
      • 1、安装node.js(如已安装可略过)
        • 2、升级gcc7.1(如无需升级则略过)
          • 3、升级GLIBCXX(如无需升级则略过)
            • 4、升级GLIBC(如无需升级则略过)
              • 5、继续安装Head插件
                • 6、启动Head
                  • 7、新建索引后集群健康状态为yellow
                  • 3、安装Kibana插件
                  • 4、安装es-sql插件
                    • 0、安装web服务最简单办法
                      • 1、下载安装
                        • 2、下载页面需要的node.js文件
                        • 5、Restful 风格语法
                          • 1、增
                            • 1、创建索引
                            • 2、插入数据
                          • 2、删
                            • 1、删除索引
                            • 2、删除数据
                          • 3、改
                            • 1、索引相关
                            • 2、数据相关
                          • 4、查
                            • 1、查看索引情况
                            • 2、条件查询
                            • 3、排序查询
                            • 4、分页查询
                        相关产品与服务
                        Elasticsearch Service
                        腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档