у меня есть индекс (схема по умолчанию), который содержит поле «персонал», и это поле является массивом.
в индексе два объекта:
{"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.8630463,
"hits": [
{
"_index": "warehouse",
"_type": "_doc",
"_id": "2",
"_score": 0.8630463,
"_source": {
"order": 2,
"status": "done",
"personnel": [
{
"name": "mike",
"function": "packer"
},
{
"name": "henry",
"function": "checker"
} ] }
},
{
"_index": "warehouse",
"_type": "_doc",
"_id": "1",
"_score": 0.8630463,
"_source": {
"order": 1,
"status": "done",
"personnel": [
{
"name": "jon",
"function": "packer"
},
{
"name": "mike",
"function": "checker"
}
] } } ] } }
и я хочу запросить его, чтобы получить заказ , где статус сделан, и человек, который упаковал этот заказ, - Майк.
У меня много запросов, но я всегда получаю два ордера, потому что майк существует в обоих ордерах (с разными функциями)
пример запроса:
{"query": {
"bool": {
"must": [
{
"match": {
"status": "done"
}
},
{
"bool": {
"must": [
{
"term": {
"personnel.name": "mike"
}
},
{
"term": {
"personnel.function": "packer"
}
} ] } } ] } } }
мой вопрос в том, как подготовить запрос, чтобы вернуть мне только один заказ, где Майк упаковщик