Node.js 如果一个字段没有';发送的对象中不存在,如果失败,请给出此错误“;[解析例外]没有为文本查询指定文本”;
我是弹性搜索新手,需要更多的理解和帮助。 如果发送对象中不存在匹配的一个字段,它会给出一个错误原因,如何修复该错误 如果我的筛选器只有一个name属性,则它不起作用。所有属性都必须位于筛选器对象中 另一个问题Node.js 如果一个字段没有';发送的对象中不存在,如果失败,请给出此错误“;[解析例外]没有为文本查询指定文本”;,node.js,
elasticsearch,Node.js,
elasticsearch,我是弹性搜索新手,需要更多的理解和帮助。 如果发送对象中不存在匹配的一个字段,它会给出一个错误原因,如何修复该错误 如果我的筛选器只有一个name属性,则它不起作用。所有属性都必须位于筛选器对象中 另一个问题 如果我想说,如果一种语言是一个特定的值,我选择忽略匹配方言,那么在使用三元运算符将其传递给ES请求主体之前,可以检查给定过滤器是否存在。如果是falsy,则使用基本上相当于Elasticsearch的no操作: { 查询:{ 布尔:{ 应:[ { 范围:{ 追随者人数:{ gte:filt
如果我想说,如果一种语言是一个特定的值,我选择忽略匹配方言,那么在使用三元运算符将其传递给ES请求主体之前,可以检查给定过滤器是否存在。如果是falsy,则使用基本上相当于Elasticsearch的no操作:
{
查询:{
布尔:{
应:[
{
范围:{
追随者人数:{
gte:filter.followers\u count\u range.gte,
lte:filter.followers\u count\u range.lte
}
}
},
性别
? {
匹配:{
用户性别:filter.gender
}
}
: {
匹配所有:{}
},
过滤方言
? {
匹配:{
方言:filter.dialogue
}
}
: {
匹配所有:{}
},
过滤语言
? {
匹配:{
lang:filter.language
}
}
:{匹配所有:{}
],
应匹配的最小值:1
}
}
};
我能再问一个问题吗?如果match:{user\u gender:filter.gender}
如果filter.gender是一个数组,当它给出错误“无法在开始数组上获取文本”时如何传递它,我假设gender
是一个布尔字段,因此可以使用。
function getConversations(filter,res){
client.search({
index: "conversations",
type: "docs",
body: {
"query": {
"bool": {
"should": [{
"range": {
"followers_count": {
"gte": filter.followers_count_range.gte,
"lte": filter.followers_count_range.lte
}
}
},
{
"match": {
"user_gender": filter.gender
}
},
{
"match": {
"dialect": filter.dialect
}
},
{
"match": {
"lang": filter.language
}
}
],
"minimum_should_match":1
}
}
}
}, function(err, resp, status) {
if (err) {
console.log(err);
res.status(400).send({
message: "Not Found"
});
} else {
//console.log("--- Response ---");
console.log(resp);
console.log("--- Hits ---");
resp.hits.hits.forEach(function(hit) {
console.log(hit._source);
});
res.status(200).send({
message: "Done"
});
}
});
}