我的数据结构非常通用。几乎任何类型的数据都适合我的数据结构。
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中完成了但是我无法理解如何制作实际使用文档中指定的“type”值的映射来实际设置值的正确类型。
在某种意义上,指定类型对我来说特别有用,例如,位置类型,日期类型,整数或...在同一数据结构上。
我一直试图在网上或书中找到任何内容,但到目前为止还没有。 这甚至可能吗?
答案 0 :(得分:3)
首先,您需要使用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