在过去的三周里,我一直在与Elasticsearch合作。我偶然发现了地图的概念。我已经在restfuljson数据中的“lat”和“long”字段上完成了映射。以下是我的映射(使用python客户端):
settings = { "settings": {
"number_of_shards":1,
'number_of_replicas':0
},
"mappings" : {
"document" : {
"properties":{
"geo": {
"type": "geo_point"
}
}
}
}
}
es.indices.create(index = "myindex", body=settings)
es.index(index='myindex', doc_type='document', body=new_data)
这将在我的数据中创建一个名为“geo”的新字段。(如果我错了,请纠正我) 但我看到(在一些例子中)如下所示:
settings = { "settings": {
"number_of_shards":1,
'number_of_replicas':0
},
"mappings": {
"document": {
"properties": {
"id": {"type" : "long"},
"version": {"type" : "text"},
"timestamp": {"type" : "long"},
"changeset": {"type" : "long"},
"uid" : {"type" : "long"},
"user_sid" : {"type" : "string"},
"location": {"type": "geo_point"}
}
}
}
}
我不明白他们之间的区别。另外,有些人正在谈论动态映射,这让我很困惑。有人能给我解释一下吗
什么是映射?
它基本上定义了每个字段的数据类型。 就像在Mysql中一样,为每列定义数据类型。(int、float、text)
什么是动态映射?
Mysql您需要有一个固定的模式。除非数据是预定义的,否则不能将其插入到列中。
Elasticsearch是无模式的。可以将数据插入不存在的字段
Elasticsearch将为您自动创建映射找出数据类型
相关问题 更多 >
编程相关推荐