首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch没有返回任何结果吗?

ElasticSearch没有返回任何结果吗?
EN

Stack Overflow用户
提问于 2016-10-03 01:06:27
回答 1查看 70关注 0票数 0

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

现在我在一个angular2组件中使用它,在我拥有的构造函数中:

代码语言:javascript
复制
constructor() {
  var connectionString = 'http://xyz@bifur-eu-west-1.searchly.com';
  this._client = new elasticsearch.Client({ host: connectionString, log: 'trace' });
}

在ngOnInit生命周期钩子中,我有:

代码语言:javascript
复制
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');
      }
    });
}

它工作得很好,显示集群是活动的,并且我的客户端成功地连接到它。但是,我随后将ping更改为:

代码语言:javascript
复制
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);
});

正如您从屏幕截图中看到的,它应该返回一个值,但我在浏览器的控制台中获得了以下内容:

代码语言:javascript
复制
TRACE: 2016-10-03T08:43:04Z
  -> POST http://bifur-eu-west-1.searchly.com/plugins/_all/_search
  {
    "query": {
      "match": {
        "name": "Contacts"
      }
    }
  }
  <- 200
  {
    "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
    },
    "hits": {
      "total": 0,
      "max_score": null,
      "hits": []
    },
    "took": 1,
    "timed_out": false
  }

为什么这个查询没有返回结果呢?

EN

回答 1

Stack Overflow用户

发布于 2016-10-03 17:22:31

抓到了!事实证明,searchly有一个后端bug,它要求您在查询中使用显式type,或者根本不使用类型,因此可以更改为:

代码语言:javascript
复制
this._client.search({
  index: 'plugins',
  body: {
    query: {
      match: {
        name: 'Contacts'
      }
    }
  }
}).then(function (resp) {
  var hits = resp.hits.hits;
}, function (err) {
  console.trace(err.message);
});

我得到了正确的结果!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39819488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档