2016-07-01 13 views
0

「first」、「last」、および「email」のフィールドを持つマッピングを持つインデックス 'user'があります。名前のついたフィールドは一点で索引付けされ、電子メールのフィールドは別のポイントで索引付けされます。 1つのuser_idパラメータに対応して、これらのインデックスが同じidを持つことを望みます。したがって、このような何か:Elasticsearchで新しい変数でインデックスを更新するにはどうすればよいですか?

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, "[email protected]")) 

私は文書が作成されていないというエラーメッセージが表示されます。可変数のフィールドを持つ文書をどのように考慮に入れるのですか?インデックスが作成されていない場合はどのように作成すればいいですか?

答えて

0

使用している機能client.updateは、アップデートpart of a documentです。実際に必要なのは、まずclient.create functionを使用して文書を作成することです。 作成してインデックスを作成するには、indices.create functionが必要です。

文書型のフィールドの可変数については、Elastic Searchがdynamic mappingをサポートしているため、問題はありません。ただし、索引を作成するときにマッピングを提供し、索引付けすることをお薦めします。 Elastic Searchのデフォルトのマッピングでは、後で問題が発生する可能性があります。 uuidsや電子メールアドレスを分析して、検索やマッチングが難しくなる(または不可能になる)。

関連する問題