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

时间:2015-05-21 22:48:26

标签: elasticsearch mapping

我在弹性搜索中索引文档时遇到以下问题,我的文档包含一些在其他文档中不重复的字段,因此我最终得到了超过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
    }
}

它将创建一个映射double,如上所示。 该对象比这更复杂,但我现在的情况是映射是杀死服务器的大。 我该如何解决这个问题?是这个场景中的多场工作?我尝试了几种方法,但似乎没有用。

感谢。

2 个答案:

答案 0 :(得分:0)

鉴于我们不知道你的用例,很难给你一个明确的答案,但我最初的猜测是,如果你有数千个没有逻辑联系的字段的映射你可能已经做了一些关于数据架构的错误选择。您能否告诉我们为什么您需要为单个文档类型设置数千个具有不同名称的字段?因为我们所做的并不多,所以我们可以确定你正确的方向。

答案 1 :(得分:0)

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

POST /index_name/_mapping/type_name
{
    "type_name": {
        "enabled": false
    }
}

它将提供所需的行为。 elasticsearch将停止为字段创建映射,以及解析和索引文档。

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