说我有这样的文件:
{
"events" : [
{
"event_id" : 123,
"props" : {
"version": "33"
},
{
"event_id" : 124,
"props" : {
"version": "44a"
}
]
}
是否可以指定将events.props.version
映射到某种类型?
我试过了:
{
"template" : "logstash-*",
...
"mappings" : {
"_default_" : {
"properties" : {
"events.props.version" : { "type" : "string" }
}
}
}
}
但这似乎不起作用。
答案 0 :(得分:1)
当然,但你需要使用"对象"类型:
如果您要映射
,请从文档(https://www.elastic.co/guide/en/elasticsearch/reference/1.5/mapping-object-type.html){
"tweet" : {
"person" : {
"name" : {
"first_name" : "Shay",
"last_name" : "Banon"
},
"sid" : "12345"
},
"message" : "This is a tweet!"
}
}
你可以写:
{
"tweet" : {
"properties" : {
"person" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "object",
"properties" : {
"first_name" : {"type" : "string"},
"last_name" : {"type" : "string"}
}
},
"sid" : {"type" : "string", "index" : "not_analyzed"}
}
},
"message" : {"type" : "string"}
}
}
}
答案 1 :(得分:1)
请查看elasticsearch Mapping API中的mapping
API。
要在内部元素中设置任何分析器,我们需要将每个内部字段视为单独的属性集。尝试以下
{
"mappings": {
"properties": {
"events": {
"properties": {
"event_id": {
"type": "string",
"analyzer": "keyword"
},
"props": {
"properties": {
"version": {
"type": "string"
}
}
}
}
}
}
}
}
如果这不起作用,请告诉我您的映射。