来自 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.state
、req.params.city
和 req.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 ") : "*"
}
}
}
})
我正在使用 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.state
、req.params.city
和 req.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 ") : "*"
}
}
}
})