映射在Elasticsearch中到底做了什么?

2024-10-02 10:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在过去的三周里,我一直在与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"}
            }
        }
    }
  }

我不明白他们之间的区别。另外,有些人正在谈论动态映射,这让我很困惑。有人能给我解释一下吗


Tags: of数据numberindexsettingsestypeproperties
1条回答
网友
1楼 · 发布于 2024-10-02 10:28:25

什么是映射?
它基本上定义了每个字段的数据类型。 就像在Mysql中一样,为每列定义数据类型。(int、float、text)

什么是动态映射?
Mysql您需要有一个固定的模式。除非数据是预定义的,否则不能将其插入到列中。
Elasticsearch是无模式的。可以将数据插入不存在的字段
Elasticsearch将为您自动创建映射找出数据类型

相关问题 更多 >

    热门问题