Mapping,就是对索引库中索引的字段名及其数据类型进行定义,类似于关系数据库中表建立时要定义字段名及其数据类型那样,不过es的mapping比数据库灵活很多,它可以动态添加字段。一般不需要要指定mapping都可以,因为es会自动根据数据格式定义它的类型,如果你需要对某些字段添加特殊属性(如:定义使用其它分词器、是否分词、是否存储等),就必须手动添加mapping。有两种添加mapping的方法,一种是定义在配置文件中,一种是运行时手动提交mapping,两种选一种就行了。
先介绍在配置文件中定义mapping,你可以把[mapping名].json文件放到config/mappings/[索引名]目录下,这个目录要自己创建,一个mapping和一个索引对应,你也可以定义一个默认的mapping,把自己定义的default-mapping.json放到config目录下就行。json格式如下:
- {
- "mappings":{
- "properties":{
- "title":{
- "type":"string",
- "store":"yes"
- },
- "description":{
- "type":"string",
- "index":"not_analyzed"
- },
- "price":{
- "type":"double"
- },
- "onSale":{
- "type":"boolean"
- },
- "type":{
- "type":"integer"
- },
- "createDate":{
- "type":"date"
- }
- }
- }
- }
接下来介绍通过请求添加mapping,下面为一个添加productIndex索引库的mapping的json格式请求。其中productIndex为索引类型,properties下面的为索引里面的字段,type为数据类型,store为是否存储,"index":"not_analyzed"为不对该字段进行分词。
- {
- "productIndex":{
- "properties":{
- "title":{
- "type":"string",
- "store":"yes"
- },
- "description":{
- "type":"string",
- "index":"not_analyzed"
- },
- "price":{
- "type":"double"
- },
- "onSale":{
- "type":"boolean"
- },
- "type":{
- "type":"integer"
- },
- "createDate":{
- "type":"date"
- }
- }
- }
- }
用java api调用的代码如下:
先创建空索引库
- client.admin().indices().prepareCreate("productIndex").execute().actionGet();
put mapping
- XContentBuilder mapping = jsonBuilder()
- .startObject()
- .startObject("productIndex")
- .startObject("properties")
- .startObject("title").field("type", "string").field("store", "yes").endObject()
- .startObject("description").field("type", "string").field("index", "not_analyzed").endObject()
- .startObject("price").field("type", "double").endObject()
- .startObject("onSale").field("type", "boolean").endObject()
- .startObject("type").field("type", "integer").endObject()
- .startObject("createDate").field("type", "date").endObject()
- .endObject()
- .endObject()
- .endObject();
- PutMappingRequest mappingRequest = Requests.putMappingRequest("productIndex").type("productIndex").source(mapping);
- client.admin().indices().putMapping(mappingRequest).actionGet();
相关推荐
总结, 本文详细介绍了使用 Java API 实现与 Elasticsearch 集群交互的方法, 包括连接集群、定义索引字段、索引数据、删除数据、搜索以及数据同步等方面的内容。这些技术对于构建高效稳定的搜索系统至关重要。
**Elasticsearch 5.4.1:分布式搜索引擎的核心特性与使用** Elasticsearch 是一个开源的、基于 Lucene 的全文搜索引擎,它以其强大的搜索功能、分布式架构和易用性在IT行业中广受欢迎。版本5.4.1是Elasticsearch的...
Elasticsearch是一个开源的全文搜索引擎,它以其高效、可扩展和分布式特性在IT行业中广泛应用,尤其是在日志分析、实时搜索和大数据分析等领域。最新版的Linux版本为`elasticsearch-8.1.1-linux-x86_64.tar.gz`,这...
Elasticsearch是一个强大的分布式搜索引擎,广泛应用于数据存储和检索。其Java API允许开发者直接通过Java代码与Elasticsearch集群交互,实现数据的增删改查、索引管理和集群操作等功能。以下是对Elasticsearch Java...
Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful服务的方式提供快速、高可用、可扩展的数据搜索和分析能力。这个"elasticsearch-7.4.0-win64.rar"压缩包包含了Elasticsearch 7.4.0版本的Windows 64位...
在2020.2.11更新的Elasticsearch Head中,可能包含以下功能和改进: 1. **集群状态可视化**:用户可以通过Head插件清晰地看到集群的状态,包括节点数量、索引信息、健康状态(绿色、黄色、红色)等,便于快速识别...
Elasticsearch 是一个开源的分布式全文搜索引擎,它提供实时、高性能的搜索和分析功能。这个“elasticSearch的操作demo”旨在展示如何在Java环境中与Elasticsearch进行交互。 首先,我们关注`ElasticsearchConfig....
- 创建索引:`PUT /index_name`,定义映射(mapping)来规范字段类型。 - 插入文档:`POST /index_name/_doc`,JSON格式表示数据。 - 查询索引:`GET /index_name/_search`,使用JSON构造查询条件。 5. **搜索...
Elasticsearch(简称ES)作为一款高性能、分布式、全文搜索引擎,广泛应用于日志分析、实时数据分析等领域。然而,对于中文文档的处理,Elasticsearch原生的分词能力相对较弱,这就需要借助于专门的中文分词插件,如...
Elasticsearch 5.5.0 是一个高度可扩展、实时的搜索和分析引擎,广泛应用于日志分析、全文检索、性能监控等多个领域。作为一款分布式、RESTful 风格的搜索引擎,它允许开发者通过简单的 HTTP 请求进行数据索引、搜索...
- 创建索引:用户可以通过简单的 RESTful API 创建索引,并定义映射(mapping)来指定字段类型和分析器。 - 分片与副本:每个索引都可以配置为多个分片和副本,分片是存储数据的基本单元,副本用于提高查询性能和...
在IT领域,Elasticsearch是一个强大的分布式全文搜索引擎,广泛应用于日志分析、实时数据分析、搜索引擎构建等多个场景。它基于Lucene库,提供了RESTful接口,易于集成到各种应用程序中。本实战将围绕Elasticsearch...
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,被广泛用于实时的索引和搜索,尤其在大数据分析和实时数据检索方面表现卓越。在这个名为"zjl-es-api.zip"的压缩包中,我们可以看到作者在学习Elastic...
- Elasticsearch 支持实时索引和搜索,适合处理大量实时数据。 - 使用刷新间隔(`index.refresh_interval`)控制索引变化何时可见。 8. **监控与调优** - 使用 `/_cluster/health` 和 `/_nodes/stats` API 监控...
- **Mapping(映射)**: 定义字段的数据类型以及如何被索引和搜索。 - **Document(文档)**: 索引内的一条记录,由一组键值对组成。 - **Cluster(集群)**: 一个或多个ElasticSearch节点的集合,共同维护数据和...
Java API是Elasticsearch官方提供的主要客户端,允许开发者直接在Java代码中方便地进行索引、搜索、映射和过滤等操作。 ### 1. **Search(搜索)** 在Java中,使用Elasticsearch进行搜索主要涉及以下步骤: 1. 创建...
- **创建索引**:使用`PUT`请求创建新的索引,定义映射(mapping)来指定字段类型。 - **索引文档**:`POST`或`PUT`请求将文档添加到索引,自动分配到分片。 - **更新文档**:通过`POST`或`PUT`请求更新已存在的文档...