2

我一直试图弄清楚如何在 ElasticSearch 中对我的数据进行建模,以完成基于搜索的过滤嵌套对象。

这是我现有的数据模式:

[
   {
      "job":{
         "jobId":"d2f462c1-3015-460e-aa4f-3e5ed8969b4a",
         "jobName":"2651",
         "otherStuff":"my stuff",
         "order":[
            {
               "description":"D-Style, To Match",
               "orderID":"ad86b512-6da3-407d-931d-d20e8717650f",
               "poNumber":"2651-1"
            },
            {
               "description":"Switch-Style, To Match",
               "orderID":"3d86b512-6da3-407d-931d-d20e8717650f",
               "poNumber":"some data"
            }
         ]
      }
   }
]

我想要完成的是:

  1. 如果我进行搜索并且它匹配该“作业对象”(包括嵌套对象)中的任何值,则每次都返回顶级作业信息。
  2. 同时,如果该数据仅匹配 1 个嵌套“订单”对象,则仅返回该订单。

因此,如果我搜索“一些数据”,我希望在结果集中看到它返回:

[
   {
      "job":{
         "jobId":"d2f462c1-3015-460e-aa4f-3e5ed8969b4a",
         "jobName":"2651",
         "otherStuff":"my stuff",
         "order":[
            {
               "description":"Switch-Style, To Match",
               "orderID":"3d86b512-6da3-407d-931d-d20e8717650f",
               "poNumber":"some data"
            }
         ]
      }
   }
]

我研究了嵌套对象类型以及父/子关系。我无法弄清楚如何仅通过 1 个查询来完成此操作。谢谢您的帮助!

4

0 回答 0