`
yucang52555
  • 浏览: 69996 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

elasticSearch源码分析之索引映射

阅读更多
    在搜索引擎中,我们需要将对应的文档数据转变成可处理的规则数据,就需要我们在这个流程中加一个映射,这就是搜索引擎中的Mapping。
    具体操作就是对索引库中索引的字段名及其数据类型进行定义,类似于关系数据库中表建立时要定义字段名及其数据类型那样,区别在于es的 mapping比数据库灵活很多,它可以动态添加字段。即使不指定mapping也可以,因为es会自动根据数据格式定义它的类型,如果你需要对某 些字段添加特殊属性(如:定义使用其它分词器、是否分词、是否存储等),就必须手动添加mapping。
    有两种添加mapping的方法,一种是定义在配置文件中,一种是运行时手动提交mapping,两种选一种就行了。
    第一种方式:在config目录下新建mappings文件夹,在这个目录下建立对应的索引文件[mapping名].json;一个mapping对应一个索引;也有一种默认的方式,定义一个默认的mapping[default-mapping.json]放到config目录下就行。
product-mapping.json:
{  
   "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"  
         }  
      }  
   }  
}

    其中productIndex 为索引类型,properties下面的为索引里面的字段,type为数据类型,store为是否存储,"index":"not_analyzed"为 不对该字段进行分词。

    第二种方式:是用java api调用:
    首先,我们需要创建空索引:
@Test
    public void testIndexCreateByJson(){
        //创建空索引库
        Node node = NodeBuilder.nodeBuilder().build();
        node.client().admin().indices().prepareCreate("productIndex").execute().actionGet();
    }

    然后,添加映射:
@Test
    public void testIndexCreateByCode() throws IOException{
        //索引映射
        Node node = NodeBuilder.nodeBuilder().build();
        node.client().admin().indices().prepareCreate("productIndex").execute().actionGet();
        XContentBuilder mapping = XContentFactory.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);  
          node.client().admin().indices().putMapping(mappingRequest).actionGet();
    }


程序猿行业技术生活交流群:181287753(指尖天下),欢迎大伙加入交流学习。
0
4
分享到:
评论

相关推荐

    elasticsearch源码

    Elasticsearch源码分析 Elasticsearch是一款基于Lucene的分布式、RESTful搜索和数据分析引擎。它的源码解析对于我们深入理解其内部工作原理至关重要。在深入探讨之前,我们需要知道几个核心概念:分布式、RESTful ...

    Elasticsearch技术解析与实战_高清 带索引书签目录_朱林(著)

    Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索和分析引擎,广泛应用于大数据处理、日志分析、实时搜索等领域。这本书针对不同层次的读者,提供了深入浅出的技术解析和实战指导。 **1. Elastic...

    elasticsearch实战源码 (黄申译)

    通过深入学习和实践黄申翻译的《Elasticsearch实战》中的源码,读者不仅可以掌握Elasticsearch的基本操作,还能了解到如何在实际项目中运用这些知识,解决大数据搜索和分析的问题。无论是对初学者还是经验丰富的...

    Elasticsearch-5.0.1-src源码

    源码分析可以帮助我们深入了解其内部机制,提升对搜索技术的理解。Elasticsearch 5.0.1是该产品的一个稳定版本,提供了诸多改进和新特性。 在Elasticsearch 5.0.1的源码中,我们可以看到以下几个重要的知识领域: ...

    SpringBoot整合Elasticsearch完整源码

    在本项目中,我们主要探讨的是如何将...通过学习和实践这个"SpringBoot整合Elasticsearch完整源码",你可以了解到如何在Spring Boot应用中无缝集成Elasticsearch,从而利用其强大的搜索和分析能力来提升应用的功能。

    Elasticsearch技术解析与实战 ,朱林(完整板)

    1. **分布式架构**:Elasticsearch的核心特性之一是分布式,它支持数据的分布式存储和检索,能够实现高可用性和水平扩展。每个节点都可以存储和处理数据,通过集群通信协调工作。 2. **文档型数据库**:Elastic...

    elasticsearch-5.0.1-core-main源码(eclipse工程的)

    **Elasticsearch 5.0.1 Core Main 源码分析** Elasticsearch 是一个流行的、开源的全文搜索引擎,广泛应用于数据分析、日志管理和实时搜索等场景。5.0.1 版本是 Elasticsearch 的一个重要里程碑,它引入了许多新...

    elasticsearch demo示例 源码程序

    **Elasticsearch(ES)** 是一款开源的、分布式全文搜索引擎,它以其高效、灵活、可扩展性在大数据处理和实时分析领域广受欢迎。这个压缩包包含了一个使用Java API编写的Elasticsearch基本功能的演示程序,名为...

    ElasticSearch-head插件

    通常,插件安装步骤包括下载源码、配置Elasticsearch的URL、然后运行Grunt命令启动服务。启动后,通过浏览器访问指定的端口即可看到head的界面。 需要注意的是,随着Elasticsearch的发展,官方推荐使用Kibana作为...

    elasticsearch5.5

    **Elasticsearch 5.5 源码分析** Elasticsearch 5.5 是一个重要的版本,它属于 Elasticsearch 的核心版本系列,该版本在功能、性能和稳定性方面都有显著的提升。Elasticsearch 是一个分布式、开源的全文搜索引擎,...

    elasticsearch-7.14.0+分词器+head插件一键下载

    安装过程通常包括克隆仓库、编译源码、将生成的 JAR 文件放入 Elasticsearch 的 plugins 目录,然后重启 Elasticsearch 服务。 在实际使用中,你需要考虑以下几点: 1. 配置 Elasticsearch:根据你的需求调整配置...

    elasticsearch5.3.0jdbc源码工程

    **Elasticsearch 5.3.0 JDBC 源码工程详解** Elasticsearch 是一个高性能、可扩展的全文搜索引擎,常用于大数据分析和实时搜索。JDBC (Java Database Connectivity) 则是 Java 平台中用于连接数据库的标准应用编程...

    elasticsearch1.5.2带head插件

    在 `elasticsearch-head-master` 文件中,包含了该插件的所有源码和资源,可以方便地进行安装和定制。 **安装 Elasticsearch 1.5.2** 1. 首先,你需要解压 `elasticsearch-1.5.2.zip` 文件,这将得到 Elastic...

    elasticsearch-5.3.2.zip

    **Elasticsearch 5.3.2 源码解析** Elasticsearch 是一个流行的、开源的全文搜索引擎,它基于 Lucene 库构建,提供了一个分布式、RESTful 风格的搜索和分析引擎服务。在5.3.2这个版本中,Elasticsearch 已经具备了...

    elasticsearch.zip

    Elasticsearch是一个强大的开源搜索引擎,广泛应用于数据分析、日志收集、全文检索等领域。在本案例中,"elasticsearch.zip" 文件是与ThinkPHP (TP) 框架相关的,特别是TP5版本,它被设计为可以移植到较早的TP3版本...

    Elasticsearch组件elasticsearch-head-master

    2. **索引管理**:用户可以通过elasticsearch-head创建、删除索引,以及查看索引的设置和映射。 3. **文档操作**:支持添加、更新和删除单个文档,方便进行数据调试和测试。 4. **搜索与分析**:提供查询输入框,...

    elasticsearch-7.10.2 源码

    源码分析可以从以下几个方面入手: 1. **模块划分**:Elasticsearch 源码包括了客户端、服务器端、核心库、插件等多个模块,了解这些模块的职责有助于深入理解代码。 2. **网络通信**:基于 Netty 实现,负责节点间...

    elasticsearch-sql-7.9.2.0(maven包)

    此外,你还需要熟悉Elasticsearch的索引管理和映射设置,以便正确地将数据导入Elasticsearch并进行查询。 在压缩包"org"中,很可能包含了Elasticsearch SQL插件的源码组织结构,包括各种Java类、接口和资源文件。...

Global site tag (gtag.js) - Google Analytics