Как сделать запрос на Flexiblesearch, чтобы получить вложенное свойство - PullRequest
1 голос
/ 28 октября 2019

Я очень новичок вasticsearch и пытаюсь собрать запрос (в Кибане) для следующих данных json:

{
    "RepoCount": 2,
    "ThirdPartyRepoCount": 1,
    "RepoReadMeCount": 1,
    "date": "2019-10-25 12:02:41",
    "projects": [
        {
            "key": "GA",
            "id": 884,
            "name": "Company Archive",
            "description": "An archive for old dormant or abandoned git projects",
            "type": "NORMAL",
            "Repos": [
                {
                    "id": 28,
                    "name": "address",
                    "scmId": "git",
                    "NumberFiles": 319,
                    "HasReadMe": false,
                    "GitRepoUrl": "blablabla.git",
                    "LastCommitDate": "08/16/2013",
                },
                {
                    "id": 364,
                    "name": "api",
                    "scmId": "git",
                    "NumberFiles": 377,
                    "HasReadMe": false,
                    "GitRepoUrl": "blablabla.git",
                    "LastCommitDate": "07/01/2014",
                }
            ]
        }
    ]
}

Я хотел бы написать запросы для доступа к данным в проектах и'Repos'. Я импортировал данные json в индекс с именем gitrepos и успешно создал шаблон индекса. Я пробовал такие запросы, как:

GET gitrepos/projects/_search
GET gitrepos/projects/REPOS/_search

Но безуспешно. Единственное, что я могу заставить работать, это:
GET gitrepos
, который просто возвращает мне все.
Я бы хотел углубиться, но вышеприведенное не работает.
Какэто сделано?

1 Ответ

0 голосов
/ 28 октября 2019

Ваш индекс называется gitrepos, поэтому ваша конечная точка поиска - GET /gitrepos/_search. Каждый документ в индексе будет чем-то похожим на ваш вышеуказанный документ;вы можете возвращать документы, в которых Repos соответствуют некоторым условиям.

GET gitrepos/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "projects.Repos.GitRepoUrl": "blablabla.git" }}
      ]
    }
  }
}

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

Если вы хотите искать отдельные документы Repo напрямую, вам нужно будет проиндексировать каждый из этих элементов в их собственном индексе.

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