简介:简称es,是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,默认端口9200,具有一下概念:
ELK的下载地址
https://www.elastic.co/cn/downloads/
是ELK的一个组成,是一个产品,而且是非常完善的产品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K就是kibana
**E:**EalsticSearch 搜索和分析的功能
**L:**Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统
**K:**Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台
Lucene 作为 Apache 开源的一款搜索工具,一直以来是实现搜索功能的神兵利器,现今火热的 Solr 和 Elasticsearch 均基于该工具包进行开发,而 Lucene 之所以能在搜索中发挥至关重要的作用正是因为倒排索引。
常用的脚本:
operate_es.sh:
#!/bin/bash
while [ "1" == "1" ]
do
echo "=================== 请输入相应命令进行操作 ==================="
echo "------------------- 1 查看ES运行状态 -------------------"
echo "------------------- 2 启动 ES -------------------"
echo "------------------- 3 关闭 ES -------------------"
echo "------------------- 4 退出 -------------------"
read -p "请输入序号:" read_num
echo ${read_num}
case ${read_num} in
"1")
echo -e "\033[34m ---------- 选择序号:1 ---------- \033[0m"
#sh start_es.sh
;;
"2")
echo -e "\033[34m ---------- 选择序号:2 ---------- \033[0m"
#sh see_es.sh
;;
"3")
echo -e "\033[34m ---------- 选择序号 3 ---------- \033[0m"
#sh stop_es.sh
;;
*)
echo -e "\033[34m ---------- 选择序号:4 ---------- \033[0m"
break;
;;
esac
done
see_es.sh:
#!/bin/bash
es_ps=`jps|grep Elasticsearch`
OLD_IFS="$IFS"
IFS=" "
arr=($es_ps)
IFS="$OLD_IFS"
if [ -z "${arr[0]}" ]
then
echo -e "\033[31m Elasticsearch 未启动............. \033[0m"
else
echo -e "\033[31m --------------Elasticsearch已经在运行,进程id:${arr[0]} -------------- \033[0m"
fi
start_es.sh:
#!/bin/sh
es=/home/elasticsearch/elasticsearch-6.7.1/bin
cd ${es}
#cd /home/elasticsearch/elasticsearch-6.7.1/bin
#sh elasticsearch
sh elasticsearch -d
echo -e "\033[5;31m elasticsearch 后台正在启动............ \033[0m"
stop_es.sh:
#!/bin/bash
es_ps=`jps|grep Elasticsearch`
OLD_IFS="$IFS"
IFS=" "
arr=($es_ps)
IFS="$OLD_IFS"
if [ -z "${arr[0]}" ]
then
echo -e "\033[31m Elasticsearch 未启动............. \033[0m"
else
echo -e "\033[31m 正在停止Elasticsearch,进程id: ${arr[0]} \033[0m"
kill -9 ${arr[0]}
echo -e "\033[31m 进程已停止................. \033[0m"
fi
分词器:全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。 文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)。
分词器的类型有standard analyzer,每个字都会分词,推荐使用安装ik分词器
Text:会分词,然后进行索引,keyword:不进行分词,直接索引
查看分词效果:
GET /_analyze
{
"text":"我们的家乡",
"analyzer":"standard"
}
json格式的索引:指定多个分词器需要子属性
{
"properties":{
"id":{
"type":"keyword"
},
"mascLibId":{
"type":"keyword"
},
"mascText":{
"type":"text",
"ananlyzer":"hanlp_nlp",
"fields":{
"standard":{
"type":"text",
"ananlyzer":"hanlp_nlp",
}
}
},
"paperdate":{
"type":"date",
"formate":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
es的Restful的操作方式操作资源:↓↓↓
Restful就是一个资源定位、资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。REST是REpresentational State Transfer的缩写(表述性状态转移)
资源:互联网所有的事物都可以被抽象为资源 REST是面向资源的,而资源是通过URI进行暴露的,操作资源通过HTTP动词来实现,URI暴露资源时,URI强调不要使用动词
规则:
CRUD 动作 | HTTP 方法 |
---|---|
Create | POST |
Read | GET |
Update | PUT |
Delete | DELETE |
**无状态:**REST是无状态的,对每个资源的请求,都不依赖与其他资源或其他请求,每个资源,都是可寻址的,都至少有一个url能对其定位。
#查看所有信息
GET indexname/_search
{
"from":0,
"size":30,
"query":{
"match_all":{}
}
}
#按条件查询
GET indexname/_search
{
"query":{
"match":{
"title":"哈哈"
}
}
}
#根据id更新稿件信息
POST indexname/_update/55681224665412
{
"doc":{
"title":"更改之后的标题",
"text":"更改之后的文本"
}
}
#插入数据
POST indexname/_doc/9865522255555
{
"id":"9865522255555",
"title":"插入的标题",
"text":"插入的文本",
"date":null
}
#根据条件删除数据
POST indexname/_delete_by_query?refresh
{
"query":{
"bool":{
"must_not":{
"match":{
"authorId":"000000"
}
}
}
}
}
#查询排序
GET indexname/_search
{
"size":100,
"query":{
"match":{
"chanel":"04"
}
},
"sort":[
{
"date":{
"order":"desc"
}
},
{
"_score":{
"order":"desc"
}
}
]
}
#查询去重
{
"collapse": {
"field": "过滤的字段"
},
"query": {
"bool": {
}
}
}
#查询某种数据量的大小
POST ccbnpmasc/_count
{
"query":{
"match":{
"chanel":"01"
}
}
}
es集群加密码:
一: 生成证书
在elasticsearch目录下执行,会在目录elasticsearch的文件目录生成elastic-stack-ca.p12文件,比如我这里是/home/elasticsearch
./elasticsearch-certutil ca
Please enter the desired output file [elastic-stack-ca.p12]: elastic-stack-ca.p12
Enter password for elastic-stack-ca.p12 :
生成 elastic-stack-ca.p12后,执行命令elasticsearch-certutil,需要注意的是elastic-stack-ca.p12文件必须是完整路径
./elasticsearch-certutil cert --ca /home/elasticsearch/elastic-stack-ca.p12
Enter password for CA (/home/elasticsearch/elastic-stack-ca.p12) :
Please enter the desired output file [elastic-certificates.p12]: elastic-certificates.p12
Enter password for elastic-certificates.p12 : #这里可以不用输入密码,直接按回车键
Certificates written to /home/elasticsearch/elastic-certificates.p12
生成的elastic-certificates.p12文件拷贝到每个节点的config目录下
二 :修改配置elasticsearch.yml
elasticsearch.yml配置文件中增加下列配置
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
三 :配置密码
在bin目录下输入下列命令
./elasticsearch-setup-passwords interactive
Enter password for [elastic]: Reenter password for [elastic]: Enter password for [apm_system]: Reenter password for [apm_system]: Enter password for [kibana]: Reenter password for [kibana]: Enter password for [logstash_system]: Reenter password for [logstash_system]: Enter password for [beats_system]: Reenter password for [beats_system]: Enter password for [remote_monitoring_user]: Reenter password for [remote_monitoring_user]: Changed password for user [apm_system] Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [remote_monitoring_user] Changed password for user [elastic]
kinaba 的后台启动
nohup ./kibana &
kibana 强制关闭
netstat -anp |grep 5601
kill -9 pid
es的安装
es kibana logstash 下载地址 https://www.oracle.com/java/technologies/javase/jdk12-archive-downloads.html
tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz
cd elasticsearch-7.10.1
mkdir data (mkdir logs)
vim /config/elasticsearch.yml 修改配置文件
安装jdk
下载地址: https://www.oracle.com/java/technologies/javase/jdk12-archive-downloads.html
tar -zxvf jdk-12.0.2_linux-x64_bin.tar.gz
修改环境变量 vim /etc/profile
export JAVA_HOME=/home/ap/ccbnp/jdk_12/jdk-12.0.2
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
使其生效 source /etc/profile
别的用户无法使用 vim ~/.bash_profile 需要修改这个文件