在搜索引擎中,我们需要将对应的文档数据转变成可处理的规则数据,就需要我们在这个流程中加一个映射,这就是搜索引擎中的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(指尖天下),欢迎大伙加入交流学习。
分享到:
相关推荐
Elasticsearch源码分析 Elasticsearch是一款基于Lucene的分布式、RESTful搜索和数据分析引擎。它的源码解析对于我们深入理解其内部工作原理至关重要。在深入探讨之前,我们需要知道几个核心概念:分布式、RESTful ...
Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索和分析引擎,广泛应用于大数据处理、日志分析、实时搜索等领域。这本书针对不同层次的读者,提供了深入浅出的技术解析和实战指导。 **1. Elastic...
通过深入学习和实践黄申翻译的《Elasticsearch实战》中的源码,读者不仅可以掌握Elasticsearch的基本操作,还能了解到如何在实际项目中运用这些知识,解决大数据搜索和分析的问题。无论是对初学者还是经验丰富的...
源码分析可以帮助我们深入了解其内部机制,提升对搜索技术的理解。Elasticsearch 5.0.1是该产品的一个稳定版本,提供了诸多改进和新特性。 在Elasticsearch 5.0.1的源码中,我们可以看到以下几个重要的知识领域: ...
在本项目中,我们主要探讨的是如何将...通过学习和实践这个"SpringBoot整合Elasticsearch完整源码",你可以了解到如何在Spring Boot应用中无缝集成Elasticsearch,从而利用其强大的搜索和分析能力来提升应用的功能。
1. **分布式架构**:Elasticsearch的核心特性之一是分布式,它支持数据的分布式存储和检索,能够实现高可用性和水平扩展。每个节点都可以存储和处理数据,通过集群通信协调工作。 2. **文档型数据库**:Elastic...
**Elasticsearch 5.0.1 Core Main 源码分析** Elasticsearch 是一个流行的、开源的全文搜索引擎,广泛应用于数据分析、日志管理和实时搜索等场景。5.0.1 版本是 Elasticsearch 的一个重要里程碑,它引入了许多新...
**Elasticsearch(ES)** 是一款开源的、分布式全文搜索引擎,它以其高效、灵活、可扩展性在大数据处理和实时分析领域广受欢迎。这个压缩包包含了一个使用Java API编写的Elasticsearch基本功能的演示程序,名为...
通常,插件安装步骤包括下载源码、配置Elasticsearch的URL、然后运行Grunt命令启动服务。启动后,通过浏览器访问指定的端口即可看到head的界面。 需要注意的是,随着Elasticsearch的发展,官方推荐使用Kibana作为...
**Elasticsearch 5.5 源码分析** Elasticsearch 5.5 是一个重要的版本,它属于 Elasticsearch 的核心版本系列,该版本在功能、性能和稳定性方面都有显著的提升。Elasticsearch 是一个分布式、开源的全文搜索引擎,...
安装过程通常包括克隆仓库、编译源码、将生成的 JAR 文件放入 Elasticsearch 的 plugins 目录,然后重启 Elasticsearch 服务。 在实际使用中,你需要考虑以下几点: 1. 配置 Elasticsearch:根据你的需求调整配置...
**Elasticsearch 5.3.0 JDBC 源码工程详解** Elasticsearch 是一个高性能、可扩展的全文搜索引擎,常用于大数据分析和实时搜索。JDBC (Java Database Connectivity) 则是 Java 平台中用于连接数据库的标准应用编程...
在 `elasticsearch-head-master` 文件中,包含了该插件的所有源码和资源,可以方便地进行安装和定制。 **安装 Elasticsearch 1.5.2** 1. 首先,你需要解压 `elasticsearch-1.5.2.zip` 文件,这将得到 Elastic...
**Elasticsearch 5.3.2 源码解析** Elasticsearch 是一个流行的、开源的全文搜索引擎,它基于 Lucene 库构建,提供了一个分布式、RESTful 风格的搜索和分析引擎服务。在5.3.2这个版本中,Elasticsearch 已经具备了...
Elasticsearch是一个强大的开源搜索引擎,广泛应用于数据分析、日志收集、全文检索等领域。在本案例中,"elasticsearch.zip" 文件是与ThinkPHP (TP) 框架相关的,特别是TP5版本,它被设计为可以移植到较早的TP3版本...
2. **索引管理**:用户可以通过elasticsearch-head创建、删除索引,以及查看索引的设置和映射。 3. **文档操作**:支持添加、更新和删除单个文档,方便进行数据调试和测试。 4. **搜索与分析**:提供查询输入框,...
源码分析可以从以下几个方面入手: 1. **模块划分**:Elasticsearch 源码包括了客户端、服务器端、核心库、插件等多个模块,了解这些模块的职责有助于深入理解代码。 2. **网络通信**:基于 Netty 实现,负责节点间...
此外,你还需要熟悉Elasticsearch的索引管理和映射设置,以便正确地将数据导入Elasticsearch并进行查询。 在压缩包"org"中,很可能包含了Elasticsearch SQL插件的源码组织结构,包括各种Java类、接口和资源文件。...