`
wbj0110
  • 浏览: 1610250 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

2.分布式搜索elasticsearch java API ------put Mapping定义索引字段属性

阅读更多

Mapping,就是对索引库中索引的字段名及其数据类型进行定义,类似于关系数据库中表建立时要定义字段名及其数据类型那样,不过es的mapping比数据库灵活很多,它可以动态添加字段。一般不需要要指定mapping都可以,因为es会自动根据数据格式定义它的类型,如果你需要对某些字段添加特殊属性(如:定义使用其它分词器、是否分词、是否存储等),就必须手动添加mapping。有两种添加mapping的方法,一种是定义在配置文件中,一种是运行时手动提交mapping,两种选一种就行了。

      先介绍在配置文件中定义mapping,你可以把[mapping名].json文件放到config/mappings/[索引名]目录下,这个目录要自己创建,一个mapping和一个索引对应,你也可以定义一个默认的mapping,把自己定义的default-mapping.json放到config目录下就行。json格式如下:

 

[plain] view plaincopy
  1. {  
  2.    "mappings":{  
  3.       "properties":{  
  4.          "title":{  
  5.             "type":"string",  
  6.             "store":"yes"  
  7.          },  
  8.          "description":{  
  9.             "type":"string",  
  10.             "index":"not_analyzed"  
  11.          },  
  12.          "price":{  
  13.             "type":"double"  
  14.          },  
  15.          "onSale":{  
  16.             "type":"boolean"  
  17.          },  
  18.          "type":{  
  19.             "type":"integer"  
  20.          },  
  21.          "createDate":{  
  22.             "type":"date"  
  23.          }  
  24.       }  
  25.    }  
  26. }  

 

       接下来介绍通过请求添加mapping,下面为一个添加productIndex索引库的mapping的json格式请求。其中productIndex为索引类型,properties下面的为索引里面的字段,type为数据类型,store为是否存储,"index":"not_analyzed"为不对该字段进行分词。

[plain] view plaincopy
  1. {  
  2.    "productIndex":{  
  3.       "properties":{  
  4.          "title":{  
  5.             "type":"string",  
  6.             "store":"yes"  
  7.          },  
  8.          "description":{  
  9.             "type":"string",  
  10.             "index":"not_analyzed"  
  11.          },  
  12.          "price":{  
  13.             "type":"double"  
  14.          },  
  15.          "onSale":{  
  16.             "type":"boolean"  
  17.          },  
  18.          "type":{  
  19.             "type":"integer"  
  20.          },  
  21.          "createDate":{  
  22.             "type":"date"  
  23.          }  
  24.       }  
  25.    }  
  26. }  


用java api调用的代码如下:

先创建空索引库

 

[java] view plaincopy
  1. client.admin().indices().prepareCreate("productIndex").execute().actionGet();  

put mapping

 

 

 

[java] view plaincopy
  1. XContentBuilder mapping = jsonBuilder()  
  2.        .startObject()  
  3.          .startObject("productIndex")  
  4.          .startObject("properties")         
  5.            .startObject("title").field("type""string").field("store""yes").endObject()    
  6.            .startObject("description").field("type""string").field("index""not_analyzed").endObject()  
  7.            .startObject("price").field("type""double").endObject()  
  8.            .startObject("onSale").field("type""boolean").endObject()  
  9.            .startObject("type").field("type""integer").endObject()  
  10.            .startObject("createDate").field("type""date").endObject()                 
  11.          .endObject()  
  12.         .endObject()  
  13.       .endObject();  
  14.  PutMappingRequest mappingRequest = Requests.putMappingRequest("productIndex").type("productIndex").source(mapping);  
  15.  client.admin().indices().putMapping(mappingRequest).actionGet();  
分享到:
评论

相关推荐

    分布式搜索 elasticsearch 方案研究 - Java API

    总结, 本文详细介绍了使用 Java API 实现与 Elasticsearch 集群交互的方法, 包括连接集群、定义索引字段、索引数据、删除数据、搜索以及数据同步等方面的内容。这些技术对于构建高效稳定的搜索系统至关重要。

    elasticsearch5.4.1

    **Elasticsearch 5.4.1:分布式搜索引擎的核心特性与使用** Elasticsearch 是一个开源的、基于 Lucene 的全文搜索引擎,它以其强大的搜索功能、分布式架构和易用性在IT行业中广受欢迎。版本5.4.1是Elasticsearch的...

    最新版linux elasticsearch-8.1.1-linux-x86_64.tar.gz

    Elasticsearch是一个开源的全文搜索引擎,它以其高效、可扩展和分布式特性在IT行业中广泛应用,尤其是在日志分析、实时搜索和大数据分析等领域。最新版的Linux版本为`elasticsearch-8.1.1-linux-x86_64.tar.gz`,这...

    Elasticsearch的javaapi使用.pdf

    Elasticsearch是一个强大的分布式搜索引擎,广泛应用于数据存储和检索。其Java API允许开发者直接通过Java代码与Elasticsearch集群交互,实现数据的增删改查、索引管理和集群操作等功能。以下是对Elasticsearch Java...

    elasticsearch-7.4.0-win64.rar

    Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful服务的方式提供快速、高可用、可扩展的数据搜索和分析能力。这个"elasticsearch-7.4.0-win64.rar"压缩包包含了Elasticsearch 7.4.0版本的Windows 64位...

    elasticsearch-head-master-2020211.zip

    在2020.2.11更新的Elasticsearch Head中,可能包含以下功能和改进: 1. **集群状态可视化**:用户可以通过Head插件清晰地看到集群的状态,包括节点数量、索引信息、健康状态(绿色、黄色、红色)等,便于快速识别...

    elasticSearch的操作demo

    Elasticsearch 是一个开源的分布式全文搜索引擎,它提供实时、高性能的搜索和分析功能。这个“elasticSearch的操作demo”旨在展示如何在Java环境中与Elasticsearch进行交互。 首先,我们关注`ElasticsearchConfig....

    最完整的Elasticsearch 基础教程

    - 创建索引:`PUT /index_name`,定义映射(mapping)来规范字段类型。 - 插入文档:`POST /index_name/_doc`,JSON格式表示数据。 - 查询索引:`GET /index_name/_search`,使用JSON构造查询条件。 5. **搜索...

    elasticsearch-analysis-ik-5.6.3.zip

    Elasticsearch(简称ES)作为一款高性能、分布式、全文搜索引擎,广泛应用于日志分析、实时数据分析等领域。然而,对于中文文档的处理,Elasticsearch原生的分词能力相对较弱,这就需要借助于专门的中文分词插件,如...

    ElasticSearch5.5.0入门学习.zip

    Elasticsearch 5.5.0 是一个高度可扩展、实时的搜索和分析引擎,广泛应用于日志分析、全文检索、性能监控等多个领域。作为一款分布式、RESTful 风格的搜索引擎,它允许开发者通过简单的 HTTP 请求进行数据索引、搜索...

    es-5.5.1整套内容.zip

    - 创建索引:用户可以通过简单的 RESTful API 创建索引,并定义映射(mapping)来指定字段类型和分析器。 - 分片与副本:每个索引都可以配置为多个分片和副本,分片是存储数据的基本单元,副本用于提高查询性能和...

    Elasticsearch实战

    在IT领域,Elasticsearch是一个强大的分布式全文搜索引擎,广泛应用于日志分析、实时数据分析、搜索引擎构建等多个场景。它基于Lucene库,提供了RESTful接口,易于集成到各种应用程序中。本实战将围绕Elasticsearch...

    zjl-es-api.zip

    Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,被广泛用于实时的索引和搜索,尤其在大数据分析和实时数据检索方面表现卓越。在这个名为"zjl-es-api.zip"的压缩包中,我们可以看到作者在学习Elastic...

    自学Elasticsearch.zip

    - Elasticsearch 支持实时索引和搜索,适合处理大量实时数据。 - 使用刷新间隔(`index.refresh_interval`)控制索引变化何时可见。 8. **监控与调优** - 使用 `/_cluster/health` 和 `/_nodes/stats` API 监控...

    ElasticSearch入门篇.docx

    - **Mapping(映射)**: 定义字段的数据类型以及如何被索引和搜索。 - **Document(文档)**: 索引内的一条记录,由一组键值对组成。 - **Cluster(集群)**: 一个或多个ElasticSearch节点的集合,共同维护数据和...

    Java操作Elasticsearch

    Java API是Elasticsearch官方提供的主要客户端,允许开发者直接在Java代码中方便地进行索引、搜索、映射和过滤等操作。 ### 1. **Search(搜索)** 在Java中,使用Elasticsearch进行搜索主要涉及以下步骤: 1. 创建...

    Elasticsearch-sgg

    - **创建索引**:使用`PUT`请求创建新的索引,定义映射(mapping)来指定字段类型。 - **索引文档**:`POST`或`PUT`请求将文档添加到索引,自动分配到分片。 - **更新文档**:通过`POST`或`PUT`请求更新已存在的文档...

Global site tag (gtag.js) - Google Analytics