来自 javascript 客户端的查询字符串查询

Query string query from javascript client

我正在使用 elasticsearch 5.5,我的查询是

client.search({
  index: 'sample',
  type: 'data',
  body: {
    "query": {
      "query_string": {
        "query": "state:req.params.state AND city:req.params.city AND postalcode:req.params.pc"
      }
    }
  }
}
})

在此代码中,req.params.statereq.params.cityreq.params.pc 是用户给定的值,它们被视为值(字符串)本身,而 returns 什么都没有,因为使用了双引号.

因此,当我尝试删除双引号时,使用的 AND 运算符未验证为运算符并引发错误。

好吧,您需要以不同的方式构建查询,以动态方式,就像这样。

const input = {
  'state': 'state',
  'city': 'city',
  'pc': 'postcode'
};
const query = [];
Object.keys(input).forEach(p => {
   if (req.params[p]) {
      query.push([input[p], req.params[p]].join(":"));
   }
});

client.search({
  index: 'sample',
  type: 'data',
  body:{
    "query":{
      "query_string": {
        "query": query.length ? query.join(" AND ") : "*"
      }
    }
  }
})