elasticsearch - 什么是弹性搜索商店,以及如何?
问题描述
根据维基百科,弹性搜索是一个搜索引擎。这意味着它不是数据库,并且不存储它正在索引的数据(但可能确实存储了它的索引)
大概有两种方法可以将数据输入 Es。日志传送或直接通过 api。
假设我的应用程序想要编写一个老式的日志文件条目:
Logger.error(now() + “模块发生了不好的事情” + 模块 + “;” + 消息”</p>
这可以写入文件或使用 rest api 将数据直接放入 es 中。
如果是通过rest api完成的,es是否存储了整个日志消息,在这种情况下,您不需要浪费磁盘将日志写入文件以实现合规性等。或者它只索引数据,因此您需要保留一个单独的副本? 如果删除或移动了原来的日志文件,es怎么知道,deos存储的东西还有用吗?
如果您写入日志文件,则使用 log stash 或类似“将日志数据放入 es” es 是否存储整个日志文件以及任何索引?
es如何解析或索引任意日志文件?它将日志行视为单个字符串,还是要求日志具有特定格式,例如 cvs 或 Jason?
有谁知道这个关键信息的资源?
解决方案
Elasticsearch 确实存储了您要编制索引的数据。
当您将数据摄取到 elasticsearch 中时,这些数据会存储在一个或多个索引中,然后可以对其进行搜索。为了能够使用弹性搜索搜索某些内容,您需要将数据存储在弹性搜索中,例如,它不能搜索外部文件。
在您的示例中,如果您有一个发送日志的应用程序执行弹性搜索,它将存储您发送的整个消息,并且在弹性搜索中之后您不再需要原始日志。
如果您需要解析不同字段中的文档,您可以在将日志作为 json 文档发送到 elasticsearch 之前执行此操作,使用 logstash 来执行此操作或在 elasticsearch 中使用摄取管道。
了解更多关于它是如何工作的一个很好的起点是官方文档
推荐阅读
- heroku - 将 Cloudinary 与 Heroku 一起使用
- python - 无法执行“gcc-8”:没有这样的文件或目录错误:命令“gcc-8”失败,退出状态为 1. PySIT 包安装
- sql-server - 创建一个 DW,包括。星模式
- sql - SQL Server:使用此查询获取表达式错误
- sql - 如何在 Snowflake SQL 中的 LEFT JOIN 表上平均每天的聊天数?
- java - 从 CSV 填充对象
- swift - 带参数的 ApplescriptObjC 方法
- java - Android Firebase 查询多个值
- python - 使用自己的名称将 pandas.dataframe 添加到另一个
- haskell - 为什么 extra-lib-dirs 不能像堆栈中的 LD_LIBRARY_PATH 一样工作?