не удалось получить массив правильной формы - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать запрос elasticsearch, и для этого мне нужно получить свой массив в определенной форме, но я не могу его получить.

желаемый результат

"query": {
    "bool": {
        "must": {
            "bool": {
                "must": [
                    "match": {
                        "active": 1
                    },
                    "bool": {
                        "should": [
                            {
                                "match": {
                                    "workspace_type.keyword": "lounge"
                                }
                            },
                            {
                                "match": {
                                    "workspace_type.keyword": " cafe"
                                }
                            }
                        ]
                    }
                ]
            }
        }
    }
}

Мой исходный код

$query = [
        'query' => [
            'bool' => [
                'must' => [
                    'bool' => [
                        'must' => []
                    ]
                ]
            ]
        ]
    ];

    $active_query = [
        'match' => [
            "active" => 1
        ]
    ];

    $query['query']['bool']['must']['bool']['must'][] = $active_query;

    $workspace_type_query = [
        'match' => [
            "workspace_type.keyword" => "lounge"
        ]
    ];
    $workspace_type_object = (object) $workspace_type_query;

    $query['query']['bool']['must']['bool']['must']['bool']['should'][] = $workspace_type_object;

единственная проблема с этим в том, что я не могу получить must [] (тот, который выше соответствует и активен), и он либо поступал как индексированный объект, например

{
"0": {
   "match": {
       "active": 1
    }
  }
}

или просто такой объект

{
   "match": {
      "active": 1
    }
}

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

1 Ответ

0 голосов
/ 05 мая 2020

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

Когда вы меняете его на

$query['query']['bool']['must']['bool']['must'] = $active_query;

, кажется, что он работает.

результат:

{
  "query": {
    "bool": {
      "must": {
        "bool": {
          "must": {
            "match": {
              "active": 1
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...