我如何使用 angular 遍历弹性搜索结果?
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 并且它返回了这样的东西,
数据:
当我遍历点击时,它说无法读取 "hits" 的 属性 undefined
$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);
$scope.results.hits.hits;
$scope.dataRetrieved= $scope.results.hits.hits;
for (var i = 0; i < $scope.dataRetrieved.length; i++) {
console.log($scope.dataRetrieved[i]);
};
};
第一个命中是一个对象,第二个是你的数组。这就是为什么第一次点击没有 属性 长度
您应该使用 doSearch()
returns :
的 Promise 对象
client
.query(oQuery.query($scope.queryTerm || '*'))
.doSearch().then(function (resp) {
var hits = resp.hits.hits;
// do whatever
}, function (err) {
console.trace(err.message);
});
知道 angular,如果你想将结果绑定到 $scope.result
也许 $timeout(function() {})
也有帮助。
在我的仪表板应用程序中,我使用弹性搜索来检索数据,它可以很好地检索数据。现在我需要遍历数据并以所需的方式获得结果。
这是我的代码,
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 并且它返回了这样的东西, 数据:
当我遍历点击时,它说无法读取 "hits" 的 属性 undefined
$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);
$scope.results.hits.hits;
$scope.dataRetrieved= $scope.results.hits.hits;
for (var i = 0; i < $scope.dataRetrieved.length; i++) {
console.log($scope.dataRetrieved[i]);
};
};
第一个命中是一个对象,第二个是你的数组。这就是为什么第一次点击没有 属性 长度
您应该使用 doSearch()
returns :
client
.query(oQuery.query($scope.queryTerm || '*'))
.doSearch().then(function (resp) {
var hits = resp.hits.hits;
// do whatever
}, function (err) {
console.trace(err.message);
});
知道 angular,如果你想将结果绑定到 $scope.result
也许 $timeout(function() {})
也有帮助。