0

我正在将 AngularJS 与 ElasticSearch 一起使用。

到目前为止,我一直在使用curl终端中的命令来玩 ElasticSearch。

现在,我希望在 AngularJS 中对我的弹性搜索索引执行搜索。我该怎么做?我假设使用 $http.get() 但我在任何地方都找不到示例。

基本上,我如何转换以下内容:

curl -XGET 'http://localhost:9200/twitter/mark/_search?pretty=true&size=100' -d '{
    "term": {
        "tag": "comedy"
    }
}'

到 Angular 请求?那就是我如何在控制器内的 AngularJS 中实现上述目标?

4

1 回答 1

1

Elasticsearch 已经发布了一个官方的 JS 客户端。你可以在 github 上找到它:https ://github.com/elasticsearch/elasticsearch-js

我发现以下示例https://github.com/elasticsearch/elasticsearch-js/issues/19有助于设置客户端实例。设置好客户端后(客户端为“es”,queryTerm 将映射到搜索框或类似内容),您可以执行如下搜索:

esApp.controller('SearchCtrl', function($scope, es) {
es.cluster.health(function (err, resp) {
    if (err) {
        $scope.data = err.message;
    } else {
        $scope.data = resp;
    }
});

$scope.search = function() {
    es.search({
        index: 'your_index',
        size: 50,
        body: {
            query: {
                query_string: {
                    default_field: 'title', 
                    query: ($scope.queryTerm || '*')
                }
            }
        }
    }).then(function (resp) {
        $scope.results = resp.hits.hits;
        $scope.hitCount = resp.hits.total;
        }, function (err) {
            $scope.results(err.message);
    });
};
于 2014-03-06T19:19:42.737 回答