【问题标题】:How to store large JSON strings in elasticsearch?如何在elasticsearch中存储大的JSON字符串?
【发布时间】:2017-06-14 21:26:24
【问题描述】:

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

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

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

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

任何见解都将不胜感激。

【问题讨论】:

  • “该字段将被简单地编入索引”,因为您不需要对其进行搜索,您的意思是“已存储且未编入索引”,对吧?
  • 是的,我们不想搜索或分析该字段,只需要返回其内容作为搜索文档中其他字段的结果。
  • 就个人而言,我会简单地将这个字段映射为带有"index": "no"的字符串字段

标签: json elasticsearch indexing


【解决方案1】:

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

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

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

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

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

干杯,多米尼克

【讨论】:

    【解决方案2】:

    我建议存储字段而不是索引,设置类型字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2012-04-10
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多