es聚合字段过多,导致查询慢
Charele 回复了问题 • 2 人关注 • 1 个回复 • 2640 次浏览 • 2023-06-21 13:11
ES的正排索引(field data)转为doc values存储后如何做到disk上实时搜索的
hapjin 回复了问题 • 4 人关注 • 2 个回复 • 6019 次浏览 • 2023-06-20 11:47
各位大佬有没有ES/Lucene原理和开发相关的讨论群聊
liaosy 回复了问题 • 2 人关注 • 1 个回复 • 2623 次浏览 • 2023-06-16 17:12
ELK7.2 启用安全认证功能 节点无法加到集群中
xialll 回复了问题 • 4 人关注 • 9 个回复 • 6540 次浏览 • 2023-06-08 16:48
es集群及服务器扩容配置请教各位前辈
God_lockin 回复了问题 • 2 人关注 • 1 个回复 • 1822 次浏览 • 2023-06-06 14:48
es 分组后求总分第一的数据
wulI 回复了问题 • 3 人关注 • 3 个回复 • 1769 次浏览 • 2023-06-05 21:05
配置xpack安全认证需要重启并设置密码,这段时间集群不可用,怎么解决呢?
zqc0512 回复了问题 • 2 人关注 • 1 个回复 • 1601 次浏览 • 2023-06-05 17:05
elasticsearch 设置密码的问题
caryliang 回复了问题 • 4 人关注 • 3 个回复 • 2607 次浏览 • 2023-06-02 17:40
es进程异常退出,es日志和系统日志都无相关信息,求助各位大大~
lemontree666 回复了问题 • 3 人关注 • 2 个回复 • 7160 次浏览 • 2023-06-02 16:20
CN_CHAR CN_WORD
zhangcm 回复了问题 • 2 人关注 • 1 个回复 • 1584 次浏览 • 2023-06-01 18:13
使用RestHighLevelClient获取Cluster setting信息BLOCK死锁【已解决】
回复yangjianxuan 回复了问题 • 1 人关注 • 6 个回复 • 2495 次浏览 • 2023-05-20 10:55
请教各位一个ES关于nested检索问题
adsreach 回复了问题 • 1 人关注 • 1 个回复 • 1806 次浏览 • 2023-05-18 19:54
ES数据没了?谁动了我的数据?
yangmf2040 发表了文章 • 0 个评论 • 2798 次浏览 • 2023-05-13 08:46
背景
我们在使用 Elasticsearch 的时候,可能会遇到数据“丢”了的情况。有可能是数据没成功写入 ES 集群,也可能是数据被误删了。
针对数据被误删,有没有好的解决办法呢?
其实我们可以把“删除数据”这个操作管理起来。当 ES 集群接收到删除数据命令的时候,先不执行该命令,而是生成一条删除数据的记录,经过管理人员批准后,该命令才会执行。这样不仅可以管理数据的删除,还可以进行删除操作的追踪:什么人,什么时间,发送了什么样的删除指令,从哪个 IP 发送的,以什么身份登录的等等。
要实现这个解决办法,我们可借助 INFINI Gateway 和 Console 的帮助。
方案架构
![](https://www.infinilabs.com/img ... p1.png)
方案效果
- INFINI Gateway 作为 ES 集群的代理,接收所有请求
- INFINI Gateway 对删除数据操作进行拦截,在 Console UI 界面生成记录
- 管理人员 在 Console UI 界面审批操作记录,审批通过操作被执行
方案演示
测试数据准备
测试索引 test1,一共有 3 条数据。message 内容分别是"line 1","line 2"和"line 3"。
![](https://www.infinilabs.com/img ... p2.png)
启动 INFINI Gateway 及 Console
网关配置新增内容
增加对 DELETE 操作的捕获,不直接执行,写入队列中。后续由队列生成特定的记录。
```
router:- name: my_router
default_flow: default_flow
tracing_flow: logging_flow
rules:
- method:
- "DELETE"
pattern: - "/{any_index}"
- "/{any_index}/{any_type}"
- "/{any_index}/{any_type}/{any_docid}"
flow: - audit_flow
- "DELETE"
- method:
- "*"
pattern: - "/{any_index}/_delete_by_query"
- "/_delete_by_query"
flow: - audit_flow
flow:
- "*"
- method:
- name: audit_flow
filter:
- logging:
queue_name: del_queue
pipeline:
- logging:
- name: del_queue_ingest
auto_start: true
keep_running: true
processor:
- json_indexing:
input_queue: "del_queue"
idle_timeout_in_seconds: 1
elasticsearch: "logging-server"
index_name: "del_requests"
worker_size: 1
bulk_size_in_kb: 1
```
执行删除操作
ES 支持多种删除操作,简单总结归纳如下:
- 删除指定文档 id
- 删除索引
- 根据查询删除指定数据(_delete_by_query)
执行删除操作之前,先通过 INFINI Gateway 访问 ES 集群,证明可正常访问数据。
![](https://www.infinilabs.com/img ... p3.png)
执行上述的几种删除命令,注意要发给 INFINI Gateway 的 8000 端口。
![](https://www.infinilabs.com/img ... p4.png)
数据查询验证数据还在
![](https://www.infinilabs.com/img ... p5.png)
Console 界面查看未批准的删除记录
![](https://www.infinilabs.com/img ... p6.png)
所有删除操作,都被记录,待审批
Console 界面进行审批通过
![](https://www.infinilabs.com/img ... p7.jpg)
选择一条记录,批准执行。Operation-approve
数据查询验证数据
"message": "line 2"的文档已被删除。
![](https://www.infinilabs.com/img ... p8.png)
Console 界面查看历史记录
![](https://www.infinilabs.com/img ... p9.png)
继续批准测试
批准删除一条文档
![](https://www.infinilabs.com/img ... 10.png)
![](https://www.infinilabs.com/img ... 11.png)
"message": "line 1" 的文档不在了。
批准删除索引
![](https://www.infinilabs.com/img ... 12.png)
![](https://www.infinilabs.com/img ... 13.png)
索引不在了。
至此我们演示了如何利用 INFINI Gateway 和 Console 对 ES 集群删除操作进行管控,本文只是抛砖引玉,相信还有更多有意思的场景等待大家发掘。
- 删除指定文档 id
- json_indexing:
- name: my_router
请教大佬,搜索结果按某个字段进行分类,每个分类第一条结果优先展示,同一分类其他结果进行减分降权(不是过滤掉),应该怎么做呢
YuLiGod 回复了问题 • 6 人关注 • 3 个回复 • 4197 次浏览 • 2023-05-06 12:02