将带有承诺的 ES 搜索服务转换为 Observables
Converting ES search service with promises to Observables
我想弄清楚如何将使用 promises(q 库)的 Elasticsearch 的 Angular 1.x 搜索服务转换为 Angular 4.x使用 Observables 的搜索服务?
或
我还看到了 toPromise,其中 Observable 被转换为 promise,反之亦然。但是,我已经看到了一些使用 Observables 进行搜索和自动完成的简单示例,因此 Observables 似乎是 Angular 4.
中使用 HTTP 的首选方式
这是我在 Angular 1.x
中用于自动完成的内容
this.getSuggestions = function(query) {
var deferred = $q.defer();
esClient.search({
index: 'query-index',
body: {
"query": {
"match_phrase_prefix": {
"suggestions": {
"query": query,
"max_expansions": 10,
"lenient": true
}
}
},
"size": 5,
"from": 0,
"_source": ["suggestions"]
}
}).then(function(es_return) {
deferred.resolve(es_return);
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
关于如何将其转换为 Observable,我什至不确定从哪里开始?
我想说的是,与其重新发明轮子,不如使用构建的东西。
您可以使用这个 Angular 的弹性搜索库:
https://github.com/byavv/angular2-elastic
或查看此线程如何适应新的 Angular 版本:
https://github.com/elastic/elasticsearch-js/issues/452#issuecomment-286738342
我会选择第一个选项,它包括:
- Angular2 弹性搜索
- 自动完成示例
我相信这就是您要找的,对吧?
我想弄清楚如何将使用 promises(q 库)的 Elasticsearch 的 Angular 1.x 搜索服务转换为 Angular 4.x使用 Observables 的搜索服务?
或
我还看到了 toPromise,其中 Observable 被转换为 promise,反之亦然。但是,我已经看到了一些使用 Observables 进行搜索和自动完成的简单示例,因此 Observables 似乎是 Angular 4.
中使用 HTTP 的首选方式这是我在 Angular 1.x
中用于自动完成的内容this.getSuggestions = function(query) {
var deferred = $q.defer();
esClient.search({
index: 'query-index',
body: {
"query": {
"match_phrase_prefix": {
"suggestions": {
"query": query,
"max_expansions": 10,
"lenient": true
}
}
},
"size": 5,
"from": 0,
"_source": ["suggestions"]
}
}).then(function(es_return) {
deferred.resolve(es_return);
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
关于如何将其转换为 Observable,我什至不确定从哪里开始?
我想说的是,与其重新发明轮子,不如使用构建的东西。
您可以使用这个 Angular 的弹性搜索库:
https://github.com/byavv/angular2-elastic
或查看此线程如何适应新的 Angular 版本:
https://github.com/elastic/elasticsearch-js/issues/452#issuecomment-286738342
我会选择第一个选项,它包括:
- Angular2 弹性搜索
- 自动完成示例
我相信这就是您要找的,对吧?