ElasticSearch 中映射和类型之间的混淆

js

1个回答

写回答

韩束

2025-06-26 01:00

+ 关注

JS
JS

深入了解ElasticSearch中的映射和类型

ElasticSearch是一个开源的分布式搜索和分析引擎,它被广泛应用于各种应用场景,如全文搜索、日志分析和数据可视化等。在使用ElasticSearch进行数据建模时,映射和类型是两个容易混淆的概念。本文将深入探讨ElasticSearch中的映射和类型,并通过案例代码进行解释。

映射:定义文档的结构和字段类型

在ElasticSearch中,映射定义了文档的结构和字段类型。它告诉ElasticSearch如何解析和索引文档中的字段。映射包含了字段的名称、类型和属性等信息。通过定义映射,我们可以控制字段的数据类型、是否索引、是否存储以及是否分析等。

下面是一个简单的映射定义的例子:

JSon

PUT /my_index

{

"mappings": {

"properties": {

"title": {

"type": "text"

},

"description": {

"type": "text"

},

"price": {

"type": "float"

}

}

}

}

在上面的例子中,我们定义了一个名为my_index的索引,并指定了字段title、description和price的类型。title和description字段的类型都是text,而price字段的类型是float。这样,当我们往索引中添加文档时,ElasticSearch会按照这个映射来解析和索引文档。

类型:在ElasticSearch 7.0及以上版本中已被弃用

在ElasticSearch的早期版本中,类型是映射的一部分,用于逻辑上将索引中的文档划分为多个类型。每个类型可以有自己的映射和设置。然而,在ElasticSearch 7.0及以上版本中,类型已经被弃用,一个索引只能包含一个类型。这是由于类型在实际应用中很少被使用,而且引入类型会增加索引的复杂性和维护成本。

案例代码:创建索引和添加文档

下面是一个使用ElasticSearch Python客户端库进行索引创建和文档添加的案例代码:

Python

from elasticsearch import Elasticsearch

# 连接ElasticSearch集群

es = Elasticsearch(['localhost:9200'])

# 创建索引和映射

es.indices.create(index='my_index', body={

"mappings": {

"properties": {

"title": {

"type": "text"

},

"description": {

"type": "text"

},

"price": {

"type": "float"

}

}

}

})

# 添加文档

es.index(index='my_index', body={

"title": "iphone 12",

"description": "The latest iphone model",

"price": 999.99

})

在上面的例子中,我们首先通过Elasticsearch Python客户端库连接到ElasticSearch集群。然后,我们使用es.indices.create方法创建名为my_index的索引,并指定了映射。最后,我们使用es.index方法往索引中添加了一个文档。

在ElasticSearch中,映射和类型是两个重要的概念。映射定义了文档的结构和字段类型,而类型在ElasticSearch 7.0及以上版本中已经被弃用。通过合理定义映射,我们可以更好地控制和管理索引中的数据。希望本文能够帮助读者更好地理解ElasticSearch中的映射和类型。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号