我已经在Node.js中编写了一个脚本,它必须识别文档的其他所需版本(重复的版本),然后通过替换来删除该版本。
比如说
文件1 d_path
:
file://storage004.directory.intra/abc.txt
文件2x 1 m1n1x:
file://homestore.directory.intra/abc.txt,
基本上,这两个文档除了单词homestore
和storage004
之外都是相似的,因此基本上是重复的,并且我们有大约2500万个数据要处理,因此我们的要求是删除所有重复文档的storage004
版本。
故障/问题:我是node.js的新手,我想从_source
中提取一个字段(字段名为d_path
),并在那里应用循环条件,到目前为止,下面的for循环已被注解掉,
问题是如何从result.hits.hits
返回/提取d_path
值
async function index(req, res, next) {
let esFinalQuery = {
"query": {
"match_phrase": {
"d_path": "file://story.directory.intra/"
}
},
};
//return res.send(esFinalQuery);
const result = await esClient.search({
index: 'elasticduplicate',
type: '_doc',
body: esFinalQuery
})
.catch(err => {
console.log(err);
});
var homeArr=[];
//homeArr=result.hits.hits;
/*for (item in homeArr) {
const path_of_duplicate = item._source.d_path.replace('homestore', 'storage004')
const document = esClient.exists({
index: 'elasticduplicate',
type: '_doc',
body: {
query: {
match: {
"d_path.keyword":path_of_duplicate
}
}
}
});
if (document) {
await esClient.deleteByQuery({
index: "elasticduplicate",
type: "_doc",
body: {
query: {
match: { "d_path.keyword": path_of_duplicate }
}
}
});
}
}*/
return res.send(result.hits.hits.forEach(function (hit) {
homeArr.push('yeah '+hit);
}));
}
1条答案
按热度按时间m1m5dgzv1#
希望这能有所帮助:
备注:
d_path:"file://story.directory.intra/"
正确await
所有异步(ES/网络)调用