でクエリを参加誰も私を助けることができますか?私は子ノードでは、2つのノードを持つ特には、私が使用してfirebase elasticsearch、 に参加するクエリを実行する必要がありElasticSearch
私は父ノードのIDであるフィールドを持っていると私は、結果として、父親のノードのすべてのフィールドを持っていると思います。
どのように私はコードで私のインデックスを作成できますか?
var db = admin.database();
var etest = db.ref(type);
etest.on('child_added', createOrUpdateIndex);
etest.on('child_changed', createOrUpdateIndex);
etest.on('child_removed', removeIndex);
function createOrUpdateIndex(snap) {
client.index(index, type, snap.val(), snap.key)
.on('data', function(data) { console.log('indexed', snap.key + data); })
.on('error', function(err) { console.log('index error ', err); }).exec();
}
function removeIndex(snap) {
client.deleteDocument(index, type, snap.key, function(error, data) {
if(error) console.error('failed to delete', snap.key, error);
else console.log('deleted', snap.key);
});
}
そして、クエリ結果を取るために:私のクライアントで私はここにelasticsearchclient、 を使用し、追加で
は、インデックスへのコードのノードの抽出物である
var queue = db.ref("search");
queue.child('request').on('child_added', processRequest);
function processRequest(snap) {
console.log('process...... ');
snap.ref.remove(); // clear the request after we receive it
var data = snap.val();
// Query ElasticSearch
client.search(index, data.type, { "query": { 'query_string': {
"query" : data.query
}}})
.on('data', function(results) {
var res = JSON.parse(results);
console.log(JSON.stringify(res.hits));
console.log("TOTAL " + JSON.stringify(res.hits.total));
queue.child('response/'+snap.key).set(results);
})
.on('error', function(error){ console.log("errore"); }).exec();
}
はにありがとう
両方のノードに同じデータがあるはずですか?適切なネストされたマッピング(親子階層)を作成することに焦点を当てる必要があります – informer
例を使用してそれを行う方法を教えてください 私はリンクhttps://www.elastic.co/guide/en/elasticsearchを読んでいます/reference/current/joining-queries.html、 それは非常に合成ですありがとう – Matteo