【问题标题】:How to use search_type from elasticsearch javascript library如何使用 elasticsearch javascript 库中的 search_type
【发布时间】:2015-08-05 14:13:32
【问题描述】:

我正在尝试使用 countsearch_type 和从 the npm module 构建的 elasticsearch.angular.js 执行搜索查询。

我可以这样执行查询:

POST /index1/type1/_search?search_type=count

 {
   "aggs": {
   "reviews": {
     "nested": {
       "path": "reviews"
      }
    }
  }
}

但是当我尝试将查询转换为 .js api 时,我得到一个错误。我的代码如下所示:

  var requestObject = {
      index:'index1',
      type:'type1',
      searchType: 'count',
      body: {
        query:{
          aggs: {
            reviews: {
              nested: {
                path: "reviews"
              }
            }
          }
        }
    };
    esClient.search(requestObject)

跟踪如下所示:

  console.js:1 DEBUG: 2015-08-04T15:28:59Z
      starting request { method: 'POST',
        path: '/index1/type1/_search',
        body: { aggs: { reviews: [Object] } },
        query: { search_type: 'count' } }

对于 elasticsearch 新手来说,这看起来不错,但请求完成时出现错误:ReferenceError: count is not defined

请问我在这里错过了什么?

【问题讨论】:

  • 它可能不相关(虽然永远不知道),但 aggs 部分需要是 body 元素的直接子元素,即不嵌套在 query 元素内。你能做出改变,然后再试一次看看是否有什么不同吗?
  • 我很确定这是 JS 错误而不是 ES 错误。你能发布你如何处理esClient.search()的回复吗?
  • @robertkliep 我现在不在电脑前,但我正在使用 promise 语法处理响应。
  • @robertklep:刚刚检查了我的响应处理代码,果然我在控制台记录了一个叫做“计数”的东西。我会在漫长的一天结束时归咎于它,但感谢您的帮助!

标签: javascript angularjs elasticsearch npm


【解决方案1】:

原来我的问题是我的一个愚蠢错误(感谢@robertklep 指出)。上面的代码实际上可以正常工作。由于我无法从 api 中找到使用 searchType 的示例,因此我将其留在这里,希望对其他人有用。

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2022-10-07
    • 2018-08-12
    • 2015-02-03
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多