我可以使用弹性搜索只存储非结构化数据吗



没有太多要求,但对Elasticsearch来说是新的。在我遇到的大多数材料中,人们首先创建一个客户端,然后通过提供映射来创建索引。

我可以在没有任何映射的情况下完成吗?例如,如果我有一个Twitter索引。

我有三个不同的结构,一个用于推特,一个用户和一个私人消息。我可以将所有文档(可能属于这三种类型中的任何一种(存储在同一索引下吗?

注:这是一个假设的例子,以帮助我理解。我不想要任何代码。

你可以做到。如果你这样做会发生什么?ES根据数据对字段执行默认类型转换。

如果您有一个字符串数据,它将被存储为text。在这种情况下,默认分析器将应用于数据。如果你想了解更多,默认分析仪

  1. 您的数据可能具有there are amazing creatures。但当你搜索包含惊奇的文档时,你可能会期望这些数据也是其中的一部分。你不会得到它
  2. 语音处理
  3. 数字处理
  4. IP处理
  5. Url处理
  6. 电子邮件处理

更多的案件无法得到妥善处理。如果您的用例符合默认映射,那么您可以继续使用。

稍后要更新映射,您需要重新索引数据。

首先,您可以添加一个文档,ES将负责为您创建索引和映射。但只有当您的集群级别设置时,这才有可能

"action.auto_create_index": "false"

设置为true,默认情况下,除非有人使用将其明确更新为false,否则为true

PUT _cluster/settings
{
"persistent": {
"action.auto_create_index": "false"
}
}

此外,即使您计划使用一些特定的数据类型,也可能存在一些问题,比如使用通用数据类型。

我有一篇关于这些设置和自动映射如何工作的详细文章,以及的优缺点

https://xyzcoder.github.io/2020/08/03/elastic-search-mapping-and-index-creation.html

最新更新