2013-04-06 2 views
0

Я использую AngularJS с ElasticSearch.AngularJS + Elasticsearch - Как искать документы

До сих пор я играл с ElasticSearch, используя команду curl в моем терминале.

Теперь я хочу выполнить поиск в AngularJS по моим показателям эластичного поиска. Как мне это сделать? Я предполагаю использование $ http.get(), но я не мог найти пример где-нибудь.

В принципе, как я конвертировать следующее:

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

угловому запрос? Вот как я могу достичь вышеуказанного в AngularJS внутри моего контроллера?

+3

Посмотрите на elastic.js. Они создали угловое обслуживание для обертывания звонков на эластичный двигатель (учебник http://www.fullscale.co/blog/2013/02/28/getting_started_with_elasticsearch_and_AngularJS_searching.html) –

ответ

1

Elasticsearch выпустил официальный JS-клиент. Вы можете найти его на github: https://github.com/elasticsearch/elasticsearch-js

Я нашел следующий пример https://github.com/elasticsearch/elasticsearch-js/issues/19, чтобы помочь в настройке экземпляра клиента. После того, как вы клиент настроен, (клиент «ы» и 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); 
    }); 
}; 
Смежные вопросы