Я пытаюсь реализовать функцию автозаполнения, используя Elasticsearch, angularJS и bootstrap.Elasticsearch.js AngularJS autocomplete
Я был вдохновлен этим решением: autocomplete/typeahead angularjs bootstrap on elasticsearch
Это мой Угловая код:
angular.module('cineAngularApp')
.service('client', function (esFactory) {
return esFactory({
host: 'localhost:9200',
apiVersion: '2.2',
log: 'trace'
});
});
angular.module('cineAngularApp')
.controller('AutocompleteCtrl', function ($scope,client) {
$scope.getResult = function(val){
return client.search({
index: 'autocomplete_test',
fields: 'city',
q: 'city:'+val
}).then(function (resp) {
var keywords = [];
for(var i in resp.hits.hits){
var fields = (resp.hits.hits[i]).fields["city"];
keywords.push(fields);
}
return keywords;
}, function (err) {
console.trace(err.message);
});
};
});
Вот моя проблема
Приведенный выше код работает отлично Я использую простой запрос, но как только я меняю запрос, добавив тело он не работает.
angular.module('cineAngularApp')
.controller('AutocompleteCtrl', function ($scope,client) {
$scope.getResult = function(val){
return client.search({
index: 'autocomplete_test',
fields: 'city',
body: {
query: {
match: {
city: val
}
}
}
}).then(function (resp) {
var keywords = [];
for(var i in resp.hits.hits){
var fields = (resp.hits.hits[i]).fields["city"];
keywords.push(fields);
}
return keywords;
}, function (err) {
console.trace(err.message);
});
};
});
Я не знаю, если это может помочь, но я также заметил при отладке, что это не запрос POST больше, но это вариант один.
Заранее за вашу помощь.
в вашем коде у вас есть синтаксис ошибка в ' "запрос": "Название:" + var'. Я не знаю, что это проблема. вы меняете это на «запрос»: «title» + val' и попробуйте. – skal88
Запрос OPTIONS - это ваш предпродажный запрос CORS. Если это не удается, вам нужно ответить соответствующими заголовками CORS на эти запросы. –