我一直试图弄清楚如何在 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 个嵌套“订单”对象,则仅返回该订单。
因此,如果我搜索“一些数据”,我希望在结果集中看到它返回:
[
{
"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 个查询来完成此操作。谢谢您的帮助!