Elasticsearch показать только имя всех индексов с узлом js

Я использую EJS framework с узлом js. Я могу получить все имена индексов в формате json. Но мне нужны только названия индексов. Мой код выглядит следующим образом-

var client = require('../routes/Connection.js');

//display all indexes
module.exports.allIndexes = function (searchData, callback) {
    client.indices.getAliases({
        index: "_all",
        level: "indices"
    }, function (error, response, status) {
        if (error) {
            console.log("search error: " + error)
        }
        else {
            //callback(response);---> this works
            callback(response.hits.hits); // ---> this doesn't
        }
    });
}

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

{
  "index-1": {
    "aliases": {}
  },
  "index-2": {
    "aliases": {}
  },
  "index-3": {
    "aliases": {}
  },
  "index-4": {
    "aliases": {}
  }
}

и когда я использую ответ.хиты.хиты в обратном вызове я получаю ошибку:»не могу прочитать свойство ‘hits’ of undefined». Я хочу показать только имена индексов в виде списка. К вашему сведению, в начале, я передал ответ, скажем ,как » результаты» :

        <h1>Index</h1>
        <% for(var i=0; i < results.length; i++) { %>
          <%= results[i].indices %>
        <% } %>

что, конечно, ничего не показывает.

edit_1:

Я импортирую модуль следующим образом:
в моей index.js:

router.post('/indexes', function (req, res) {
    elasticModule.allIndexes(req.body, function (data) {
        res.render('elasticGui', { title: 'Elasticsearch GUI', results: data });
    });
});

1 ответ

  1. При просмотре структуры ответа

    {
      "index-1": {
        "aliases": {}
      },
      "index-2": {
        "aliases": {}
      },
      "index-3": {
        "aliases": {}
      },
      "index-4": {
        "aliases": {}
      }
    }
    

    ты ведь ничего не видишьhits? So response.hitsis undefined and the error happens when trying to reference hitsout of response.hits

    Вам просто нужно изменить свой код, как это:

    callback(Object.keys(response));
    

    И тогда, на ваш взгляд, вы можете итерировать над этим массивом, как это:

        <% results.forEach(function(index) { %>
          <%= index %>
        <% }); %>