繁体   English   中英

如何使用角度迭代弹性搜索结果?

[英]How can i iterate over elastic search results using angular?

在我的仪表板应用程序中,我正在使用弹性搜索来检索数据,从而可以很好地检索数据。 现在,我需要遍历数据并以所需的方式获得结果。

这是我的代码,

routerApp.controller('SearchCtrl', function($scope, ejsResource) {

       var ejs = ejsResource('http://192.168.1.200:9200');

        var oQuery = ejs.QueryStringQuery().defaultField('Agent');

        var client = ejs.Request()
            .indices('nondomain_callrelatedinfo')
            .types('callrelatedinfos');

        $scope.search = function() {
            $scope.results = client
                .query(oQuery.query($scope.queryTerm || '*'))
                .doSearch();
            console.log($scope.results);

        };

    });

我在结果中添加了console.log,它返回了类似这样的数据:

在此处输入图片说明

当我遍历命中时,它说无法读取未定义的“命中”属性

$scope.dataRetrieved= $scope.results.value.hits;
            for (var i = 0; i < $scope.dataRetrieved.length; i++) {
                console.log($scope.dataRetrieved[i]);
             };
            };

https://docs.angularjs.org/api/ng/function/angular.forEach

只需嵌套forEach:

angular.forEach(results, function(result, key) {
    angular.forEach(result, function(value, key) {
         this.push(key + ': ' + value);
    }, log);
}, log);

您应该使用doSearch()返回的Promise对象:

client
    .query(oQuery.query($scope.queryTerm || '*'))
    .doSearch().then(function (resp) { 
        var hits = resp.hits.hits; 
        // do whatever
    }, function (err) { 
        console.trace(err.message); 
    });

知道角度后,如果要将结果绑定到$scope.result也许$timeout(function() {})也会有所帮助。

$ scope.results。 hits.hits ;

$scope.dataRetrieved= $scope.results.hits.hits;
        for (var i = 0; i < $scope.dataRetrieved.length; i++) {
            console.log($scope.dataRetrieved[i]);
         };
        };

第一个匹配是一个对象,第二个匹配是您的数组。 多数民众赞成为什么多数民众赞成在没有财产的长度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM