Эластичный поисковый запрос для фильтрации массива по двум условиям - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь создать поисковый запрос Elastic для изменения полученных данных, но я не очень разбираюсь в Elastic и не знаю, как этого добиться.

У меня есть массив«Задачи», и мне нужно получить те задачи, отфильтрованные по некоторым условиям. Прямо сейчас запрос фильтруется по: - Должен быть назначен или создан для определенной "группы" - Должен быть назначен или создан для конкретного "пользователя"

Группа и пользователь определяются пользователем, который делает запрос.

{
    "_source": {
        "includes": [
            "taskId",
            "tenantId-createdAt-circuitId",
            "assignedToGroup",
            "assignedToUser",
            "assignedToRole",
            "circuitId",
            "createdAt",
            "createdByRole",
            "currentStatus",
            "taskType",
            "tenantId",
            "history",
            "payload",
            "slaExpiresAt",
            "taskDefinitionName",
            "taskDefinitionId",
            "input"
        ]
    },
    "sort": [
        {
            "createdAt": {
                "order": "desc"
            }
        }
    ],
    "size": 20,
    "from": 0,
    "query": {
        "bool": {
            "filter": {
                "bool": {
                    "must": [
                        {
                            "match": {
                                "tenantId.keyword": "tenant1"
                            }
                        },
                        {
                            "range": {
                                "createdAt": {
                                    "gte": "now-1y/d",
                                    "lte": "now+1d/d"
                                }
                            }
                        }
                    ],
                    "should": [
                        {
                            "match": {
                                "createdByGroup.keyword": "SUPERVISORES"
                            }
                        },
                        {
                            "match": {
                                "assignedToGroup": "SUPERVISORES"
                            }
                        }
                    ]
                }
            },
            "should": [
                {
                    "match": {
                        "assignedToUser.keyword": "supervisorsucursal1@btekstudio1.onmicrosoft.com"
                    }
                },
                {
                    "match": {
                        "createdByUser.keyword": "supervisorsucursal1@btekstudio1.onmicrosoft.com"
                    }
                }
            ]
        }
    }
}

Мне нужно начать обрабатывать условие «роли», поэтому окончательный запрос должен получить: - Задачи, назначенные или созданные для группы пользователей (а также необходимо получить задачи в этой группе, которая нероли не назначены) - Задачи, назначенные роли пользователя - Задачи, назначенные o, созданные для пользователя

Это мое отображение https://pastebin.com/yE6PGLDQ И это пример задачи https://pastebin.com/p0942qfv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...