【问题标题】:Creating an empty index in elasticsearch in node.js在 node.js 的 elasticsearch 中创建一个空索引
【发布时间】:2015-05-08 15:59:50
【问题描述】:

我正在使用官方的 elasticsearch npm。在我的节点应用程序中,我正在使用该客户端创建索引,如下所示

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

我需要为上述索引放置映射,因此我必须首先创建一个空索引(没有数据的索引),然后我必须执行放置映射,然后我必须将数据放入索引中。

为此我必须创建一个空索引,但在官方弹性搜索客户端中,上述方法(创建)是用“POST”方法编写的,因此它需要一个主体。

为此,我必须像上面那样给出一个空的身体 {}。那么如何使用官方 javascript 客户端创建一个空索引。请分享您的想法。

【问题讨论】:

    标签: javascript node.js elasticsearch


    【解决方案1】:

    解决此问题的另一种方法是使用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 映射。

    【讨论】:

    • 谢谢。但是 your_dynamic_index_name_pattern 没有定义它可以是任何东西,我无法预测模式。那我该怎么做呢?
    • 那么您的意思是您的索引名称可以是任意的并且不遵循任何命名约定?你能举一些你会使用什么名字的例子吗?此外,您的集群中是否只有这种随机命名的索引,或者您是否还有其他一些具有固定名称的索引?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多