我有一个索引'user',其映射的字段为“first”,“last”和“email”。具有名称的字段在一个点处被索引,然后具有电子邮件的字段被索引在单独的点处。我希望这些索引具有相同的id,对应于一个user_id参数。所以像这样:
function indexName(client, id, name) {
return client.update({
index: 'user',
type: 'text',
id: id,
body: {
first: name.first
last: name.last
}
})
}
function indexEmail(client, id, email) {
return client.update({
index: 'user',
type: 'text',
id: id,
body: {
email: email
}
})
}
运行时:
indexName(client, "Jon", "Snow").then(indexEmail(client, "jonsnow@gmail.com"))
我收到一条错误消息,指出该文档尚未创建。如何计算具有可变数量字段的文档?如果索引尚未创建,然后随后更新,我该如何创建索引?
答案 0 :(得分:1)
您正在使用的功能client.update
,更新part of a document。您实际需要的是首先使用client.create
function创建文档。
要创建和索引,您需要indices.create
function。
关于文档类型中可变数量的字段,这不是问题,因为弹性搜索支持dynamic mapping。但是,建议在创建索引时提供映射,并尝试坚持下去。弹性搜索默认映射可以在以后创建问题,例如分析那些难以(或不可能)搜索和匹配的uuids或电子邮件地址。