我的数据结构非常通用。几乎所有类型的数据都适合我的数据结构。
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”值来实际为该值设置正确类型的映射。
在某种意义上说,指定类型对我特别有用,例如,我可以在同一数据结构上使用位置类型,日期类型,整数或…。
我一直在尝试找到在线或书籍中的任何内容,但到目前为止没有任何内容。这有可能吗?
首先,您将要使用嵌套类型来确保名称查询/过滤器未与同一文档的另一个字段的值混合在一起。
其次,您不能具有具有相同字段名称的不同类型,在这种情况下为“值”。因此,您将需要稍微更改发送给Elasticsearch的文档的结构。
当您说“任何类型”时,您是否可以控制类型的数量?如果这样做,您可以做一些事情,例如拥有名为“ date_value”,“ location_value”,“ float_value”(或类似名称)的字段,等等。“ string_value”并不是一个好值。它会有什么分析仪?为它的目的而命名的类型可能会更好,例如,“ keyword_value”(例如,您可能想要了解的内容),“ name_value”(可能具有模糊支持),“ text_value”(已进行分析以进行适当的搜索) ), 等等。
我做了一个可运行的示例,您可以在这里使用:https : //www.found.no/play/gist/7596633