【问题标题】:How to update an index with new variables in Elasticsearch?如何在 Elasticsearch 中使用新变量更新索引?
【发布时间】:2016-11-04 00:05:07
【问题描述】:

我有一个索引“用户”,该索引具有“第一”、“最后”和“电子邮件”字段的映射。带有名称的字段在某一点被索引,然后带有电子邮件的字段在另一个点被索引。我希望这些索引具有相同的 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"))

我收到一条错误消息,指出该文档尚未创建。如何解释具有可变数量字段的文档?如果尚未创建索引,如何创建索引,然后在执行过程中对其进行更新?

【问题讨论】:

    标签: node.js elasticsearch indexing full-text-search


    【解决方案1】:

    您正在使用的函数client.update 更新part of a document。您实际需要的是首先使用client.create function 创建文档。 要创建和索引,您需要indices.create function

    关于文档类型中的可变字段数,这不是问题,因为 Elastic Search 支持dynamic mapping。但是,建议在创建索引时提供映射,并尝试坚持下去。弹性搜索默认映射可能会在以后给您带来问题,例如分析难以(或不可能)搜索和匹配的 uuid 或电子邮件地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      相关资源
      最近更新 更多