node.js - ElasticSearch JS查询返回所有文档而不是过滤

标签 node.js elasticsearch

我遇到这个问题:当我尝试过滤它们时,ElasticSearch JS返回所有文档。我有两个文档,只有一个与这些过滤器匹配,但是ES返回所有文档...没有创建映射,只有两个文档。我不知道该怎么办...

我正在使用Node JS

  client.search({
    index: "yojuego",
    type: "user",
    query: {
      "filtered": {
        "filter": {
          "bool": {
            "must": [
              { "term": { "userid": "123456789" } },
              { "term": { "type": "yojuego" } }
            ]
          }
        }
      }
    }
  }, (error, response, status) => {
    if (error) {
      res.json(400, err);
    }
    else {
      res.json(200, response.hits.hits);
    }
  });
});

最佳答案

您的搜索参数中有一个错字,您需要将query括在body参数中。

  client.search({
    index: "yojuego",
    type: "user",
    body: {                  <--- add this
     "query": {
      "filtered": {
        "filter": {
          "bool": {
            "must": [
              { "term": { "userid": "123456789" } },
              { "term": { "type": "yojuego" } }
            ]
          }
        }
      }
     }
   }
  }, (error, response, status) => {
    if (error) {
      res.json(400, err);
    }
    else {
      res.json(200, response.hits.hits);
    }
  });
});

关于node.js - ElasticSearch JS查询返回所有文档而不是过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502026/

相关文章:

node.js - 如何销毁客户端 session 中的 session

node.js + 表达错误 : cannot read property 'url' of undefined

javascript - 为什么我们需要返回一个 promise 解析?

ruby-on-rails - Searchkick:Elasticsearch 没有索引 "FORBIDDEN/12/index read-only"?

arrays - 如何在elasticsearch中按数组元素搜索?

elasticsearch - 无法使用Logstash(7.6.2)和xml过滤器插件设置解析和设置时间戳

Elasticsearch快照长时间处于IN_PROGRESS状态,删除快照也不起作用

node.js - ESLint 规则在用户模块和标准 Node 模块之间插入一个空行

regex - elasticsearch 上的负前瞻正则表达式

javascript - 如何用 node.js 做 AOP?