Dynamic 弹性搜索何时添加动态映射
我在弹性搜索(ES)动态映射方面遇到了麻烦。看来我陷入了困境 主要目标是将进入ES的所有内容存储为字符串 我所尝试的:Dynamic 弹性搜索何时添加动态映射,dynamic,elasticsearch,mapping,Dynamic,elasticsearch,Mapping,我在弹性搜索(ES)动态映射方面遇到了麻烦。看来我陷入了困境 主要目标是将进入ES的所有内容存储为字符串 我所尝试的: 在ES中,只有在创建索引后才能创建动态映射 创建。好的,有道理 我无法创建空索引,因此如果 发送到索引中的第一项不是字符串,我不能 重新分配它。。。我不知道第一个是什么类型的对象 在索引中,它可以是任何类型,这取决于应用程序如何接受各种对象/事件 因此,如果我不能提前创建映射,不能插入空索引来创建映射,也不能在事后更改映射,那么如果第一项不是字符串,我该如何处理呢 下面是我目前
index\u name.*
匹配的任何内容时,将使用上面的动态映射创建索引
例如:
curl -XPUT localhost:9200/index_name_1/type_name/1 -d '{
"one": 1,
"two": "two",
"three": true
}'
这将创建一个名为index\u name\u 1
的新索引,其映射类型为type\u name
,其中所有属性都是string
。你可以用
curl -XGET localhost:9200/index_name_1/_mapping/type_name
答复:
{
"index_name_1" : {
"mappings" : {
"type_name" : {
"dynamic_templates" : [ {
"strings" : {
"mapping" : {
"type" : "string"
},
"match" : "*",
"match_mapping_type" : "*"
}
} ],
"properties" : {
"one" : {
"type" : "string"
},
"three" : {
"type" : "string"
},
"two" : {
"type" : "string"
}
}
}
}
}
}
请注意,如果您愿意通过Javascript API执行此操作,则可以使用该调用。您可以共享当前正在使用的映射吗?没有映射,这就是我正在尝试的。创建我自己的自定义一个,其中所有内容都是字符串。我的问题是什么时候创建动态映射,因为我在创建动态映射之后才能创建,而且您也无法根据我所读的内容更改ES中的现有映射,因此您必须重新编制索引。感谢@Val,我正在使用JS API,但我不知道在使用.create()创建索引时如何应用模板。文档中没有提到如何应用模板参数。。。你看到我回答的最后一句话了吗不知道我错过了什么。。。我更新了帖子以显示我的代码。有什么建议吗?我被卡住了:/I我可以看到该模板使用curl\u模板存在,但无论出于何种原因,它都不会将该模板应用于我的记录。也没有错误。哦,我知道。。。您不应该显式创建索引,只需尝试在
timeline-2015-11-21
索引中为文档编制索引,ES将为您创建索引。因此,您应该使用调用而不是索引。创建一个索引似乎也不起作用。在ES中,我仍然使用以下curl得到type:long表示“number\u try”:curl-k——request POST——header‘Content type:application/json’——data’{“number\u try”:123,“description”:“your description goes here”,“text”:“your text goes here.可以代替description属性”,“severity\u type”:“error”}“myuri”
curl -XGET localhost:9200/index_name_1/_mapping/type_name
{
"index_name_1" : {
"mappings" : {
"type_name" : {
"dynamic_templates" : [ {
"strings" : {
"mapping" : {
"type" : "string"
},
"match" : "*",
"match_mapping_type" : "*"
}
} ],
"properties" : {
"one" : {
"type" : "string"
},
"three" : {
"type" : "string"
},
"two" : {
"type" : "string"
}
}
}
}
}
}