ElasticSearch没有返回任何结果?

时间:2016-10-02 17:06:27

标签: javascript search elasticsearch angular

我确信我错过了一些东西,但我正在努力开始使用ElasticSearch。我使用www.searchly.com设置了远程搜索服务器,并使用ElasticSearch-js与其进行交互。我已经使用searchly设置了一个索引,您可以看到它已填充(如下面的屏幕截图所示)。

enter image description here

现在我在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);
});

为什么此查询不返回结果?

1 个答案:

答案 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);
});

我得到了正确的结果!