【发布时间】:2016-07-07 07:50:00
【问题描述】:
我有这个映射的简单文档:
'product': {
'properties': {
'name': { 'type': 'string' },
'shops': {
'type': 'object',
'index_name': 'shop',
'properties': {
'name': { 'type': 'string' },
'url': { 'type': 'string' },
'price': { 'type': 'integer' },
}
}
}
}
文档如下所示:
{
'name': 'Kindle',
'shops': [
{ 'name': 'amazon', 'url': 'http://...', 'price': 79 },
{ 'name': 'ebay', 'url': 'http://...', 'price': 99 }
}
但我想以这种格式存储文档:
{
'name': 'Kindle',
'shops': {
'amazon': { 'url': 'http://...', 'price': 79 },
'ebay': { 'url': 'http://...', 'price': 99 }
}
}
有没有办法为此进行映射?或者我应该只创建对象“商店”并使其保持无模式。
【问题讨论】:
-
你打算做什么样的查询?
-
查询将很简单,在大多数情况下,对特定商店的选定产品进行字符串查询。例如: { "query_string" : { "query" : "exists:shops.amazon.url" } } 我更喜欢将商店存储为对象而不是数组,因为在 ruby 中更容易操作。
-
@mrazicz 你克服了这个问题吗?
-
嗨,是的,我使用下面答案中的解决方案。但毕竟,我最终得到了我原来的解决方案。事实证明,该对象数组更适合我的用例。
标签: elasticsearch