Javascript elasticsearch - работает на локальном экземпляре, но не на сервере?

У меня есть скрипт визуализации javascript, который использует твиты, которые проиндексированы в elasticsearch (перевариваются библиотекой tweepy), твиты проходят через elasticseach, и все работает нормально, однако визуализация работает только с моим локальным экземпляром elasticsearch (даже если я подключаюсь к нему через сервер, и оба экземпляра elasticsearch работают), если я отключаю локальный elasticsearch и пытаюсь запустить javascript, он не работает, и я получаю TypeError: response is undefined и Unable to revive connection: http://localhost:9200/.

Что мне нужно изменить, чтобы он работал из экземпляра elasticsearch, а не из локального экземпляра?

вот код javascript:

    $(function() {
    // Data
    var colors = ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"];
    var client = new elasticsearch.Client({
        host: 'localhost:9200',
        log: 'trace'
    });
    var index = "tw"; 
    var loadData = function() {

        var data_count = 10000;
        client.search({
            index: index,
            q: "*.*",
            size: data_count,
            sort : 'timestamp:desc'
//                        sort: '_id'

        }, function (error, response) {
            hits = response.hits.hits;
            data = hits.map(function(element, index, array) {
                return element._source
            });
//                        console.info(data);

            formatTWEEPY(updateVis);
//            
        });
    };

    loadData();

    // Instantiate vis
    var timesets = sm.vis.timesets()
        .colors(colors)
        // .setMode("background")
        // .applyLayout(false)
        .verticalMode("ellipse")
        .elementMode("gradient")
        .showSettings(true)
        .margin({ top: 0, right: 180, bottom: 0, left: 25 });

    // Update the vis
    var updateVis = function() {
        // Update dimension
        var width = $("svg").width();
        var height = $("svg").height();
        timesets.width(width).height(height - 30);

        d3.select(".sm-timesets-demo").attr("transform", "translate(0, " + height + ")");

        redraw();
    };


    function redraw() {
        d3.select(".sm-timesets-demo").datum(data).call(timesets);
    }


    function formatTWEEPY(callback) {

        data.forEach(d => {
            d.themes = d.hashtags.map(function(t) {return t.text});
            d.time = new Date(d.timestamp);
            d.title = d.message;
        });

//        console.info(data)
        var hashtags = flatten(data.map(function(t){return t.themes}))
//        console.info(hashtags)
        var dict = hashtags.reduce(function (p, c) {
            p[c] = (p[c] || 0) + 1;
            return p;
        }, {});

        var items = Object.keys(dict).map(function(key) {
            return [key, dict[key]];
        });

        themes = items.sort((a, b) => d3.descending(a[1], b[1])).slice(0, 10).map(e => e[0])


        data = { events: data.slice(), themes: themes };
        callback();
    }
});

function flatten(arr) {
  return arr.reduce(function (flat, toFlatten) {
    return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
  }, []);
}

Я попытался добавить IP-адрес к серверу вместо host: 'localhost:9200', но это не имело никакого значения, это все равно не сработало. Я добавил эти строки в свой elasticsearch.yml как на экземпляре сервера, так и на локальном, чтобы разрешить соединение:

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST

Я пробовал этот пример с эластичного веб-сайта, и я получаю, что кластер elasticsearch не работает, но не знаю, как его исправить, поэтому я получил правильный ответ:

    client.ping({
  requestTimeout: 30000,
}, function (error) {
  if (error) {
    console.error('elasticsearch cluster is down!');
  } else {
    console.info('All is well');
  }
});

Эластичный поиск при беге - 6,2

Спасибо за помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
75
1

Ответы 1

предоставьте вывод systemctl​ ​status​ ​elasticsearch

у меня работает после редактирования /etc/elasticsearch/elasticsearch.yml

http.cors.enabled:​ ​ true

http.cors.allow-origin:​ ​ "*"

$​ ​apt-get​ ​install​​ elasticsearch-6.2.deb
$​ systemctl​ enable​​ elasticsearch  # important    
$​ systemctl​ ​start​ ​elasticsearch

ответ, который я получаю: `` Не найдена команда 'systemctl', вы имели в виду: команда 'systemctl' из пакета 'systemd' (main) systemctl: команда не найдена, но у меня установлен systemd и т. д. (его ubuntu 16.04) так что я думаю, что что-то не так с моей установкой elasticsearch ??

Angelika 28.03.2018 11:39
root@vis4sense:/bin# systemctl status elasticsearch.service ● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-03-28 10:34:58 UTC; 17min ago Docs: http://www.elastic.co Main PID: 1240 (java) Tasks: 86 Memory: 1.7G CPU: 40.343s CGroup: /system.slice/elasticsearch.service └─1240 /usr/bin/java -Xms4g -Xmx4g -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancy
Angelika 28.03.2018 12:58

systemctl status elasticsearch.service сейчас включен, но кластер elasticsearch не работает! отклик

Angelika 28.03.2018 13:01

да, я сделал systemctl enable elasticsearch.service Synchronizing state of elasticsearch.service with SysV init with /lib/systemd/systemd-sysv-install... Executing /lib/systemd/systemd-sysv-install enable elasticsearch, и я все еще получаю тот же ответ

Angelika 28.03.2018 14:42

Другие вопросы по теме