我正在使用 Firebase 函数将数据推送到 ElasticSearch 进行索引。但有时数据集没有完全索引。哪些字段可以被索引似乎是一种随机行为,有时所有字段都被索引,有时只有几个,有时只有一个。
我用来将数据推送到Elasticsearch的firebase函数如下:
exports.indexHashtagsToElastic = functions.database.ref('/valid_hashtags/{hashtag_id}')
.onWrite(event =>{
let hashtagData = event.data.val();
let hashtag_id = event.params.hashtag_id;
console.log('Indexing the hashtags: ', hashtagData);
let elasticSearchConfig = functions.config().elasticsearch;
let elasticSearchUrl = elasticSearchConfig.url + 'hashtags/hashtag/' + hashtag_id;
let elasticSearchMethod = hashtagData ? 'POST' : 'DELETE';
let elasticSearchRequest = {
method: elasticSearchMethod,
url: elasticSearchUrl,
auth:{
username: elasticSearchConfig.username,
password: elasticSearchConfig.password
},
body: hashtagData,
json: true
};
return request(elasticSearchRequest).then(response => {
console.log("ElasticSearch response", response);
});
});
根据此日志 console.log('Indexing the hashtags: ', hashtagData);
有时数据集未完整传输。然而,在数据库上创建的数据集是完整且正确的。
知道这里出了什么问题吗?谢谢!
最佳答案
您需要指定要根据您的请求建立索引的字段。
let elasticSearchFields = ['field1','field2','field3',...'fieldn'];
然后在您的请求中您应该添加以下内容
...
body: _.pick(hashtagData , elasticSearchFields ),
...
希望能成功
关于javascript - 使用 Firebase 函数将数据索引到 ElasticSearch,并非所有字段都被索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48168278/