在找到的文件中按字段分组

时间:2017-09-06 22:02:11

标签: elasticsearch spring-data-elasticsearch

解释我想要完成的事情的最好方法就是举例。

我们假设我有一个包含字段namecolor以及transaction_id的对象。我想搜索namecolor匹配指定值的文档,并且我可以使用布尔查询轻松完成。 但是,我不想只使用搜索查询找到的文档。我还想要这些文档所属的事务,并且使用transaction_id指定。例如,如果找到transaction_id等于123的文档,我希望我的查询返回transaction_id等于123的所有文档。

当然,我可以使用两个查询来执行此操作,第一个用于获取与条件匹配的所有文档,第二个用于返回在第一个查询中找到transaction_id个值之一的所有文档。 但有没有办法在一个查询中做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以在事务和对象之间使用父子关系。或者嵌套对数据进行非规范化以在事务中包含对象。否则,您将不得不进行应用程序端连接,这意味着2个查询。

尝试类似于以下内容的索引映射,并在对象中包含parent_id

{
  "mappings": {
    "transaction": {},
    "object": {
      "_parent": {
        "type": "transaction" 
      }
    }
  }
}

进一步阅读: https://www.elastic.co/guide/en/elasticsearch/guide/current/parent-child-mapping.html

相关问题