我的数据结构非常通用.几乎任何类型的数据都适合我的数据结构.
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