我试图在nodejs中使用elasticsearch的官方客户端为chouchDB创建索引。真的很感激任何帮助。
这就是我创建索引的方式:
esClient.indices.create({index: "users_index",
body: {
"type" : "couchdb",
"couchdb" : {
"host" : "localhost",
"port" :"5984",
"db" :"users"
},
"index" : {
"index" : "users_index",
"type" : "users",
"bulk_size" : "100",
"bulk_timeout" : "10ms"
}
}}).then(function(x){
console.log(x);
callback(null);
},
function(err){
console.log(err);
callback(null);
});
当我在意义上搜索这样的数据时(GET users_index / users_index / _search),我得到的没有任何数据: { “拿”:1, “timed_out”:false, “_shards”:{ “总数”:1, “成功”:1, “失败”:0 }, “命中”:{ “总数”:0, “max_score”:null, “点击”:[] } }
我真的很感激任何帮助。
在创建索引之前,我还尝试创建索引模板,以便所有索引都获得相同的映射。我这样做就像以下一样。我没有走那么远,以验证它是否正确。如果有任何错误,请告诉我。
esClient.indices.putTemplate({
name: "vw_index_template",
body:{
"template" : "*_index",
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"id_prkey_template" : {
"properties" : {
"_id" : {"type" : "string", "index": "not_analyzed"},
"prkey" : {"type" : "string", "index": "analyzed"}
}
}
}
}
}).then(function(res){
console.log(res);
callback(null);
}, function(error){
console.log(error);
callback(null);
});
非常感谢任何帮助。
非常感谢。
答案 0 :(得分:0)
您无法将文档(正文)附加到indices.create
(see here)。如果您只想将新文档编入现有或不存在的索引,则应使用index
,例如:
esClient.index({
index: "users_index",
type: "couchdb",
body: {
field1: 'test',
field2: 123
}
}).then(function (x) {
console.log(x);
callback(null);
},
function (err) {
console.log(err);
callback(null);
});
此外,您不应为_id
字段指定任何映射,因为它是内部ES字段。