我确信我错过了一些东西,但我正在努力开始使用ElasticSearch。我使用www.searchly.com
设置了远程搜索服务器,并使用ElasticSearch-js与其进行交互。我已经使用searchly设置了一个索引,您可以看到它已填充(如下面的屏幕截图所示)。
现在我在angular2组件中使用它,在我的构造函数中:
$dcatName = "select * from tbl_category where catName='$catName'";
和ngOnInit生命周期钩子中,我有:
constructor() {
var connectionString = 'http://xyz@bifur-eu-west-1.searchly.com';
this._client = new elasticsearch.Client({ host: connectionString, log: 'trace' });
}
工作正常并显示群集处于活动状态,我的客户端已成功连接到它。但是,我然后将ping更改为:
ngOnInit() {
this._client.ping({
// ping usually has a 3000ms timeout
requestTimeout: Infinity,
// undocumented params are appended to the query string
hello: "elasticsearch!"
}, function (error) {
if (error) {
console.trace('elasticsearch cluster is down!');
} else {
console.log('All is well');
}
});
}
从屏幕截图中可以看到,应该返回一个值,但我会在浏览器的控制台中看到它:
this._client.search({
index: 'plugins',
type: '_all',
body: {
query: {
match: {
name: 'Contacts'
}
}
}
}).then(function (resp) {
var hits = resp.hits.hits;
}, function (err) {
console.trace(err.message);
});
为什么此查询不返回结果?
答案 0 :(得分:0)
抓住了!事实证明,搜索有一个后端错误,要求您在查询中使用明确的type
,或者根本不使用任何类型,因此请更改为:
this._client.search({
index: 'plugins',
body: {
query: {
match: {
name: 'Contacts'
}
}
}
}).then(function (resp) {
var hits = resp.hits.hits;
}, function (err) {
console.trace(err.message);
});
我得到了正确的结果!