2015-05-08 53 views
0

我使用的是官方的elasticsearch npm。在我的節點的應用程序,我使用該客戶端如下在node.js的elasticsearch中創建一個空索引

client.create({ 
    index: orgID, ---------->This is dynamic 
    type: "places", 
    body:{} 
    }, function(error, response){ 
     if(error){          
     } else {               
     }               
    }) 

我需要把映射上述指標,所以對於我必須創建一個空的指數(指數無數據)第一,然後我在創建索引執行put映射,然後我必須將數據放入索引。

所以對於我必須創建一個空的索引,但在官方elasticsearch客戶上述方法(創建)被寫入「POST」方法,以便它的期望的主體。

爲此,我必須如上所述給出空體{}。那麼我怎樣才能使用官方的JavaScript客戶端創建一個空索引。請分享你的想法。

回答

0

另一種解決方法是使用index templates。索引模板的思想是讓ES在需要時自動創建一個缺失的索引,即當索引索引名稱與某種模式匹配的文檔時,還將預定義的映射(最終是別名)應用於該新索引。如果這樣做了

curl -XPUT localhost:9200/_template/template_1 -d '{ 
    "template" : "your_dynamic_index_name_pattern", 
    "settings" : { 
     "number_of_shards" : 1 
    }, 
    "mappings" : { 
     "places" : { 
      // mapping definition of your places type 
     } 
    } 
}' 

,任何時候你將索引一個新的文檔(例如,使用上面的client.create()例子),其索引名匹配的模式,ES:

例如,您可以創建一個索引模板,這樣將自動創建索引,並在編制索引文檔之前將PUT映射。

+0

謝謝。但是,your_dynamic_index_name_pattern沒有定義它可以是任何東西,我不能預測模式。那我該怎麼做呢? – Subburaj

+0

所以你說的是你的索引名稱可以是任意的,它不遵循任何命名約定?你能舉一些你會用什麼名字的例子嗎?另外,你的羣集中是否只有這種隨機命名的索引,或者是否還有其他一些固定名稱的索引? – Val

相關問題