ElasticSearch

本文围绕Elasticsearch展开,介绍其功能,如近实时搜索、单表聚合分析等。阐述了ES安装、ELK组件(Elasticsearch、Logstash、Kibana、FileBeat)作用,以及环境配置、版本要求。还提及ik中文分词器问题处理、Logstash导入数据测试,最后介绍ES删除数据和查询语法等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

es安装目录不能有空格(ik)
es,etcd等

ES数据并非实时的,而是近实时的。这是因为ES使用了分布式搜索引擎Lucene作为其底层实现,而Lucene是基于倒排索引的搜索引擎,它需要一定时间来构建和更新索引,因此ES中的数据也需要一定时间才能被索引和搜索到。

ES的近实时性可以通过下面两个参数进行配置:

1. refresh_interval:该参数用于控制索引的刷新间隔时间。当索引被修改后,数据不会立刻被写入磁盘,而是暂时存储在内存中,等待一段时间后再批量写入磁盘。这个时间间隔由refresh_interval参数控制,默认值为1s。

2. index.translog.flush_threshold_ops:该参数用于控制操作的批量提交。当批量操作的数量达到该参数指定的数值后,会自动将内存中的数据写入磁盘。该参数默认值为5000。

通常情况下,可以根据具体的业务需求来调整这些参数,以达到更好的搜索性能和数据更新实时性的平衡。比如,可以将refresh_interval设置为较小的值,以加快索引的刷新速度,但同时也会增加磁盘IO的负载,需要注意磁盘的承受能力。 

1.功能

近实时搜索
单表聚合分析
实时预测(插件)
在这里插入图片描述
OLTP(on-line transaction processing)翻译为联机事务处理, OLAP(On-Line Analytical Processing)翻译为联机分析处理,从字面上来看OLTP是做事务处理,OLAP是做分析处理。从对数据库操作来看,OLTP主要是对数据的增删改,OLAP是对数据的查询

mysql适合OLTP:(可用性,ACID)
(1)事务涉及少量数据
(2)通过索引访问数据
(3)用户量较大
(4)数据查询和更新频繁
(5)响应速度快

2.es

不要把es作为主要的数据存储

倒排索引

  1. 安装
    https://www.elastic.co/guide/en/elasticsearch/reference/7.6/getting-started-install.html

在这里插入图片描述
在这里插入图片描述

3.ELK

Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

4. 环境

  • jdk
    es默认自带jdk,linux指定用 export
    windows es 指定自己的jdk
    elasticsearch-env.bat
    添加
    set JAVA_HOME=C:\elasticsearch-7.6.1\jdk\bin即可
  • 启动
    elasticsearch.bat
    -d 后台启动
    访问http://localhost:9200/,有结果显示即可
  • 异常问题
  1. win10 启动异常, 结束 进程
  2. 注意linux不能用root用户启动
# 添加组
groupadd es
useradd es -g es
# 更改用户所有者为es
chown -Rf es:es /usr/local/es
# su es 
  1. 注释掉jvm.options的 8-13:-XX:+UseConcMarkSweepGC
    7.6版本的 14-:-XX:+UseG1GC 默认已开启
    es安装和启动
    ES配置文件参考与参数详解
    ES在Linux上的配置
    简单集群:ElasticSearch7.6集群搭建
    详细ElasticSearch 7.4集群部署

5. 版本

要求 kinbanna 和 es 版本一致
版本必须保持一致

6.ik中文分词器

elasticSearch安装ik分词器插件后报错: java.security.AccessControlContext
如果使用es自带jdk,修改 D:\elasticsearch-7.6.1\jdk\conf\security的java.policy文件,在grant{ };中加入一行即可,permission java.security.AllPermission;

此项设置与es开启远程访问设置冲突.

  • 开启es远程访问
    修改conf–>elasticsearch.yml
view codeelasticsearch.yml文件
​
node.name: node-1 前面的#打开#network.host: 192.168.0.1
network.host: 192.168.136.110
#network.host: 0.0.0.0
#network.host: localhost
#network.host: 127.0.0.1  这里把network.host 设置为自己的ip地址 也可以设置成0.0.0.0(代表所有ip可以访问)
​
cluster.initial_master_nodes: ["node-1"] 这里一定要这样设置,我就是这里没有这样设置出问题的,弄了好久
这里的   node-1   是上面node.name:后面的对应值
​
在最后加上这两句,要不然,外面浏览器就访问不了哈
​
http.cors.enabled: true
http.cors.allow-origin: "*"

7. Logstash导入数据

正式导入前,使用
logstash -f ./logstash_mysql.conf -t
测试一下,显示ok再导入
kibana添加测试数据

8.es 操作

1. 删除全部数据

5.x使用

POST indexName/_delete_by_query
{
  "query": { 
    "match_all": {
    }
  }
}

有时候因为数据量较大删除到一半就返回结果了,不要慌,继续发送命令,多执行几次就好了。

之后删除索引

DELETE /indexName

2. Elasticsearch query查询语法

es的六种搜索方式 es query

filter:过滤,不参与打分
must:如果有多个条件,这些条件都必须满足 and与
should:如果有多个条件,满足一个或多个即可 or或
must_not:和must相反,必须都不满足条件才可以匹配到 !非

发生 描述
must
该条款(查询)必须出现在匹配的文件,并将有助于得分。

filter
子句(查询)必须出现在匹配的文档中。然而不像 must查询的分数将被忽略。Filter子句在过滤器上下文中执行,这意味着评分被忽略,子句被考虑用于高速缓存。

should
子句(查询)应该出现在匹配的文档中。如果 bool查询位于查询上下文中并且具有mustor filter子句,则bool即使没有should查询匹配,文档也将匹配该查询 。在这种情况下,这些条款仅用于影响分数。如果bool查询是过滤器上下文 或者两者都不存在,must或者filter至少有一个should查询必须与文档相匹配才能与bool查询匹配。这种行为可以通过设置minimum_should_match参数来显式控制 。

must_not
子句(查询)不能出现在匹配的文档中。子句在过滤器上下文中执行,意味着评分被忽略,子句被考虑用于高速缓存。因为计分被忽略,0所有文件的分数被返回。
  1. 精确匹配单个字段
GET /{索引名}/_search
{
  "query": {
    "term": {
      "{FIELD}": "{VALUE}"
    }
  }
}
  1. 查询后排序
GET /{索引名}/_search
{
  "query": {
    "term": {
      "id": "dzjk"
    }
  },
  "sort": {
    "timestamp": {
      "order": "desc"
    }
  }
}

es查询排序的写法

{
	"query": {
		"bool": {
			"must": [],
			"must_not": [{
					"term": {
						"flow_yh_yh_location": ""
					}
				},
				{
					"term": {
						"routemcc": "1111"
					}
				},
				{
					"term": {
						"routemcc": "2222"
					}
				}
			],
			"should": [{
				"match_all": {}
			}]
		}
	},
	"from": 0,
	"size": 10,
	"sort": {
		"tftxtime": {
			"order": "desc"
		}
	},
	"aggs": {}
}
  1. 多条件查询
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "id": "dzj"
          }
        },
        {
          "term": {
            "timestamp": "2021-07-15 00:05:07"
          }
        }
      ]
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值