如何在Elasticsearch中按“嵌套”哈希值进行排序

时间:2013-08-08 15:30:11

标签: elasticsearch

我目前的文件结构与:

相似
{
  'name': 'Sum Guy',
  'age': 31,
  'scores': {'blue': 5, 'yellow': 9, 'red': 2}
}

我似乎无法找到合适的映射或排序方式。
我希望得到的结果是“向我展示30岁以上的所有人并按照'蓝色'分数对他们进行排序”

Nested documents似乎总是数组,而不仅仅是普通的哈希。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果这是您的文档结构,则不需要嵌套文档。您可以按scores.blue排序。

如果您有一个对象数组,嵌套文档的点是。 如果你的结构是这样的:

{
 'name' : 'Sum Guy',
 'age' : 31,
 'scores' : [{
   'name' : 'blue',
   'count' : 5
  }, {
   'name' : 'yellow',
   'count' : 9
  }
 }
 ]
 }

然后你需要“得分”作为嵌套类型。当你有一个这样的数组时,名字和计数的值将在顶层被展平。然后搜索“30岁以上蓝色大于5的人”不会带回正确的结果,除非您将其定义为嵌套,然后数组中的每个对象实际上都是一个单独的文档,因此保留了上下文。