elasticsearch 避免在弹性搜索中映射多个字段,elasticsearch,mapping,elasticsearch,Mapping" /> elasticsearch 避免在弹性搜索中映射多个字段,elasticsearch,mapping,elasticsearch,Mapping" />

elasticsearch 避免在弹性搜索中映射多个字段

elasticsearch 避免在弹性搜索中映射多个字段,elasticsearch,mapping,elasticsearch,Mapping,在elasticsearch中为文档编制索引时,我遇到了以下问题:我的文档包含一些在其他文档中不重复的字段,因此我最终得到了超过100.000个元素的映射。让我们看一个例子: 如果我将这样的内容发送到空索引: {"example":{ "a1":123, "a2":444, "a3":52566, "a4":7, ..... "aN":11 } } 它将创建以下映射: {"example" : { "propertie

在elasticsearch中为文档编制索引时,我遇到了以下问题:我的文档包含一些在其他文档中不重复的字段,因此我最终得到了超过100.000个元素的映射。让我们看一个例子:

如果我将这样的内容发送到空索引:

{"example":{
    "a1":123,
    "a2":444,
    "a3":52566,
    "a4":7,
    .....
    "aN":11
    }
}
它将创建以下映射:

{"example" : {
          "properties" : {
               "a1" : {
                      "type" : "long"
                      },
                "a2" : {
                      "type" : "long"
                      },
                "a3" : {
                      "type" : "long"
                      },
                "a4" : {
                      "type" : "long"
                      },
                .....
                "aN" : {
                      "type" : "long"
                      }
                }
        }
}
如果我发送另一份文件:

{"example":{
    "b1":123,
    "b2":444,
    "b3":52566,
    "b4":7,
    .....
    "bN":11
    }
}
它将创建一个映射,该映射与上面的映射相同。 对象比这更复杂,但我现在遇到的情况是,映射太大,导致服务器死机。 我如何解决这个问题?在这种情况下,多字段是否有效?我试过几种方法,但似乎不起作用


谢谢。

鉴于我们不知道您的用例,很难给您一个明确的答案,但我的初步猜测是,如果您有数千个没有逻辑连接的字段的映射,您可能对数据的体系结构做出了一些错误的选择。您能告诉我们为什么一个文档类型需要数千个具有不同名称的字段吗?事实上,我们无法为您指出正确的方向。

如果您确实想这样做,请按照下面的示例创建映射:

POST /index_name/_mapping/type_name
{
    "type_name": {
        "enabled": false
    }
}
它将提供所需的行为。elasticsearch将停止为字段创建映射,并对文档进行解析和索引

请参阅以下链接以获取更多信息:


对于初学者,我的第一感觉是,如果两个文档没有相同的键(或它们的一大个子集相同),那么它们首先就不属于同一类型(即
示例
)。您可能还想检查一下。正如Alex Brasetvik所说,问题不在于有太多的字段,而在于无法控制映射并让其无限增长,也许有一些想法需要对映射进行思考。也许你是对的,问题可能在于数据体系结构,我们将此体系结构用于O(1)在代码中查找,但我们可以用另一种方式序列化。不管怎样,假设这个用例是一个人,我们有一些定义这个人的属性,比如“isTall”:“yes”,“goesToGym”:“mondays”。。。像这样成千上万。