我正在使用Firebase Flashlight来查询我的Firebase数据库。
以下是我在Firebase中构建数据的方式:
posts: {
id: {
"address": "",
"id": "",
"name": "",
"review": "",
"summary": "",
}, id: {...}
},
users: {
uid: {
"username": "",
"name": "",
}, uid: {...}
}
这就是我在Flashlight Node应用程序中设置config.js的方式:
exports.paths = [
{
path: "users",
index: "firebase",
type: "user",
fields: ["username", "name"]
},{
path: "posts",
index: "firebase",
type: "post",
fields: ["id","name","summary","review", "address"]
}
];
我可以通过发送一个简单的查询字符串来轻松搜索用户,该字符串将搜索用户的用户名和用户名并返回该用户的uid。
我希望能够遍历一个post id数组(基本上只是一个查询循环),并查看是否有任何其他字段(地址,名称,评论,摘要)与指定的关键字匹配,还有通配符。
因此搜索必须与帖子ID匹配,并且必须匹配关键字以寻址或命名或审核或摘要。
这是我尝试的查询,但我不知道如何进行OR:
var query = {
'query': {
'bool': {
'must': [
{'match': {'name': 'duck'}},
{'match': {'review': 'duck'}},
{'match': {'summary': 'duck'}},
{'match': {'address': 'duck'}},
{'match': {'id': '-K1kiCqGWfM-29pi9wdC'}}
]
}
}
};
如何形成一个查询,检查id是否与id字段匹配,且该关键字是否与其他任何字段匹配?
答案 0 :(得分:0)
这将是原始的JSON查询,但它应该适合您:
{
"query": {
"bool": {
"must": [
{"match": {"id": "-K1kiCqGWfM-29pi9wdC"}},
{
"bool": {
"should": [
{"match": {"name": "duck"}},
{"match": {"review": "duck"}},
{"match": {"summary": "duck"}},
{"match": {"address": "duck"}}
]
}
}
]
}
}
}
在Elasticsearch中should
代表OR
条件。
请注意,我创建了嵌套的bool查询。如果那将是SQL,它看起来会像这样:
SELECT *
FROM Document
WHERE id = '-K1kiCqGWfM-29pi9wdC'
AND (
address = 'duck'
OR NAME = 'duck'
OR review = 'duck'
OR summary = 'duck'
);
答案 1 :(得分:0)
我使用了以下内容:
$('#toggle').click(function() {
$('#dropdown').slideToggle();
$('#opt-slide').toggleClass('open');
$('#sign #s1').toggleClass('close1');
$('#sign #s2').toggleClass('close2');
});
$('#dropdown > li').click(function() {
$('#dropdown').slideUp();
$('#opt-slide').removeClass('open');
});
感谢Evaldas Buinauskas让我指向了正确的方向。