AngularJS和elasticsearch服务器有两个节点

时间:2015-08-11 18:41:08

标签: angularjs elasticsearch

我一直在尝试运行带有两个节点的elasticsearch服务器。 我有一个AngularJS应用程序(在Node.js中)有两个视图/ js文件和 在每个js文件中,我想通过elasticsearch进行单独搜索。

直到现在,我在不同的localhost端口上运行两个不同的elasticsearch服务器。基于该设置,至少两个不同的视图起作用(即,示出了正确的结果)。 我试图根据elasticsearch页面上的信息在一台服务器上创建两个节点。但后来我不知道如何在我的视图中接近两个节点。

以下是我创建两个服务器的源代码:

"use strict";

(function () {
    var users=angular.module('myApp.users',['elasticsearch','chart.js'])

    users.controller('usersCtrl', function ($scope,elasticClient) {
        console.log("init users module");
    });
    users.factory('elasticClient', ['esFactory', function(esFactory) {  
        return esFactory({
            hosts: [
                'localhost:9200'                        
            ],
            sniffOnStart: true,
            sniffInterval: 300000 
        });
    }]);                

    users.factory('elasticClient1', ['esFactory', function(esFactory) { 
        return esFactory({
            hosts: [
                'localhost:9201'                        
            ],
            sniffOnStart: true,
            sniffInterval: 300000 
        });
    }]);                
}) ();

然后我的两个视图的JS代码: 视图1:

'use strict';

angular.module('myApp.view1', ['ngRoute', 'myApp.users'])
    .config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/view1', {
            templateUrl: 'view1/view1.html',
            controller: 'View1Ctrl',
            controllerAs: 'View1'
        });
    }])
    .controller('View1Ctrl', ['$scope','elasticClient', function($scope, elasticClient) {   
        elasticClient.search({     
            // Query.          
        }).then(function (resp) {
            // Do SOmething with results.               
        });
    }]);

视图2:

'use strict';

angular.module('myApp.view2', ['ngRoute', 'myApp.users'])
    .config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/view2', {
            templateUrl: 'view2/view2.html',
            controller: 'View2Ctrl',
            controllerAs: 'View2'
        });
    }])
    .controller('View2Ctrl', ['$scope','elasticClient1', function($scope, elasticClient1) {
        elasticClient1.search({}).then(function (resp1) {});
    }]);

如果有人可以帮忙的话会很棒!

干杯, 岸堤

1 个答案:

答案 0 :(得分:0)

View 1和View 2 JavaScript都有一个额外的JAVA_OPTS=-Xmx2048m -XX:MaxPermSize=768m JAVA_TOOL_OPTIONS=-Xmx1024m -XX:MaxPermSize=512m -Xms512m ,导致./gradlew :app:TestMockDebug }}无法匹配。两者都直接跟随每个观点' ]