2016-12-07 5 views
0

私はelasticsearchに新しいフィールドを追加しようとしています。これは "dateAdded"と呼ばれ、データのソートにも使用されます。 nodejを使ってどのように動くかわからない。ElasticSearchに新しいフィールドを追加するには?

私はここをお探しですか?

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html

私はどのように私はそれがこのモジュールでnodejsを使用して行うことができ、カールを使用するための例を参照してください - https://github.com/elastic/elasticsearch-js

をこれは私が最初にそれをインデックス化する方法である:

esclient.index({ 
           index: 'projects', 
           type: 'project', 
           id: projectIdStr, 
           body: { 
           "title": proj.title, 
           "company": proj.company, 
           "tags": proj.tagsArray, 
           "defaultPicId": proj.defaultPicId 
           } 
          },function(err,resp,status) { 
           if(err) { console.log(err);} else { 

           //stored 
           } 

          }); 

答えて

0

これに対する答えは、あなたのelasticsearchクラスターがどのように設定されているかに基づいて少し変わります。

デフォルト設定の場合、ダイナミックマッピングがオンになります。これが当てはまる場合、新しいフィールドを追加することは、そのフィールドを持つドキュメントにインデックスを付けることと同じくらい簡単です。elasticsearchは、適切なマッピングを推測し、そのフィールドをそのタイプのマッピングに追加します。

https://www.elastic.co/guide/en/elasticsearch/guide/current/dynamic-mapping.html

あなたが動的マッピングをオフに持っている場合は、あなただけのタイプにPUT mappingコマンドを実行する必要があります

PUT indexname/_mapping/mytype 
{ 
    "properties": { 
    "dateAdded": { 
     "type": "date", 
     "format": "dateOptionalTime" 
    } 
    } 
} 

これを見てみましょう:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html

とだからダイナミックマッピングが設定されている場合は、更新APIを使用するだけで新しいマッピングが可能になります。

https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-update

+0

ねえので、私はもともとそれをインデックス化する方法が含まので、私はそれがデフォルトであると仮定して、あなたは私がNPMモジュールとそれを呼び出す方法を知っていますか?それはまだesclient.indexですか、別の呼び出しが行われていますか? – Lion789

関連する問題