如何在elasticsearch中存储大型JSON字符串?

问题描述 投票:0回答:3

我们正在使用 ES2.3。在字段中存储 JSON 的推荐映射/类型是什么?另外,这些字段的最大建议长度是多少?我们不需要分析该字段,它永远不会构成查询的一部分。该字段将简单地被索引,然后当文档中的其他字段与搜索匹配时返回。

该字段可能非常大,因为它将包含一个 JSON 对象数组,定义用户数据的子集,其中包含姓名、电子邮件地址和问候语。实际上,该字段将包含针对一组用户的定位练习的结果,然后该字段将用于驱动向这些用户发送电子邮件的电子邮件流程。这可能会导致数十到数百名用户发送电子邮件。

如果我们对最大字段长度有一定的了解,那么我们就可以计算出需要多少个文档来分割定位结果。

我们真的不想针对每个用户使用文档,因为这会在规模方面很快失控。

任何见解将不胜感激。

json elasticsearch indexing
3个回答
3
投票

您可以使用类似(source)的映射对其进行索引:

"json_field": {
    "type": "string",
    "index": "no"

整个文档将被存储,但该字段不会被索引 - 因此它将不可用于搜索,也不会弄乱您的索引。我们还将此应用于静态信息,例如详细信息页面或产品图像的超链接。

根据此线程,您也不必面对最大字段长度。不过,在存储大型文档时,您仍必须注意最大 Java 堆大小(source)。

我希望这能解决您的问题!由于这是我在 stackoverflow 上的第一个回答,我们将非常感谢您的反馈!

干杯,多米尼克


2
投票

我建议存储该字段而不对其进行索引,设置类型字符串。


0
投票

据我所知,当使用新版本的ES时,例如7或8。您可以将dynamic设置为false以避免为新字段创建新索引。并且可以控制每一级文档的对象是否进行动态映射。

更多详细信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic.html#dynamic-inner-objects

© www.soinside.com 2019 - 2024. All rights reserved.