Вложенный запрос на ElasticSearch - PullRequest
0 голосов
/ 07 октября 2019

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

    { 

  categorisedTags: 
   { urlTags: { L: [] },
     commodityTags: { L: [Array] },
     tags: { L: [] } },
  newOptions: [],
  created_at: 'Mon, 07 Oct 2019 12:55:34 GMT',
  name: 'Template ',
  }

Мне нужно запросить индекс с помощью «commodityTags», поэтому, учитывая строку, он должен вернуть все документы, гдеСтрока включена в массив commodityTags.

Я пробовал с:

service.queryTags = async (index, values) => {
    const { hits } = await esClient.search({
      index,
      type: '_doc',
      body: {
        query: {
          term: {
            'categorisedTags.commodityTags': 'oil'
          }
        },
      },
    });
    return hits.hits.map(({ _source }) => _source);
  };

Но не повезло, всегда возвращает 0 хитов. Как я могу сделать этот тип вложенных запросов на ES?

1 Ответ

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

Вложенный запрос можно создать, как показано ниже. Запрос

"query": {
    "nested": {
      "path": "categorisedTags",
      "query": {
        "bool": {
         "must": [
           {
             "term": {
               "categorisedTags.commodityTags": {
                 "value": "oil"
               }
             }
           }
         ]
        }
      },
      "inner_hits": {}
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...