elasticsearch – 带映射的动态类型

我的数据结构非常通用.几乎任何类型的数据都适合我的数据结构.

Document{
    "id" : 12345678,
    "fields" : 
        [{
            "name" : "Book title",
            "value" : "Harry Potter",
            "type" : "string"
        },
        {
            "name" : "price",
            "value" : 34.50,
            "type" : "float"
        }]
}

另一份文件可能是这样的:

Document{
    "id" : 123456790,
    "fields" : 
        [{
            "name" : "Blog title",
            "value" : "My awesome blog",
            "type" : "string"
        }]
}

此数据可以更改,字段可以包含任何类型和名称.
如何动态创建模板映射,以便映射的“类型”由我的数据中的“类型”的值设置?
例如值:34.50,类型:浮点数
同时数据“值”:“哈利波特”,类型:字符串

我已经看到在ES中已经完成了但我无法理解制作实际使用文档中指定的“类型”值的映射来实际设置值的正确类型.

在某种意义上,指定类型对我来说特别有用,我可以在同一数据结构上拥有位置类型,日期类型,整数或…

我一直试图在网上或书中找到任何内容,但到目前为止还没有.
这甚至可能吗?

最佳答案 首先,您需要使用
nested类型以确保名称上的查询/过滤器不与同一文档的另一个字段的值混合.

其次,您不能使用相同的字段名称使用不同的类型,在本例中为“value”.因此,您需要稍微更改发送到Elasticsearch的doucments的结构.

当你说“任何类型”时,你能控制类型的数量吗?如果这样做,您可以执行诸如“date_value”,“location_value”,“float_value”(或类似的)等字段之类的操作. “string_value”并不是一个好的.它有什么样的分析仪?为其目的命名的类型可能更好,例如“keyword_value”(例如,您可能想要面对的事情),“name_value”(可以有模糊支持),“text_value”(分析正确搜索)等等.

我做了一个可以在这里玩的可运行的例子:https://www.found.no/play/gist/7596633

点赞