`
xiang37
  • 浏览: 429946 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ElasticSearch1.7.3 报错Root type mapping not empty after parsing!

 
阅读更多

熟悉Lucene也比较久了,最近想了解一下ElasticSearch的原理以及简单的使用一下。

代码如下:

 try
        {
            XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("xivaik").startObject("properties").startObject("ajmc").field("type", "string")
                    .field("store", "yes").endObject().startObject("ajbh").field("type", "string").field("store", "yes").field("index", "not_analyzed").endObject()
                    .startObject("jyaq").field("type", "string").field("indexAnalyzer", "ik").field("searchAnalyzer", "ik").field("index", "analyzed").endObject()
                    .startObject("addDate").field("type", "date").endObject().endObject().endObject().endObject();

            PutMappingRequest mappingRequest = Requests.putMappingRequest("xivaik").type("infoaj").source(mapping);

            client.admin().indices().putMapping(mappingRequest).actionGet();

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

 

执行时,结果报错Root type mapping not empty after parsing!

后来看到这个帖子,给我一点启发。

I removed the "mappings" json object and it fixed the issue.

 

http://stackoverflow.com/questions/29304374/elasticsearch-java-root-type-mapping-not-empty-after-parsing

 应该是我在构建mappingRequest 出现了节点重复构造。

我本想构造的信息是:

{"xivaik":{"properties":{"ajmc":{"type":"string","store":"yes"},"ajbh":{"type":"string","store":"yes","index":"not_analyzed"},"jyaq":{"type":"string","indexAnalyzer":"ik","searchAnalyzer":"ik","index":"analyzed"},"addDate":{"type":"date"}}}}

可以看得出,startObject("xivaik")已经将我的索引xivaik添加到了结构信息中,但是Requests.putMappingRequest("xivaik").type("infoaj")中又指定了索引xivaik,我想是不是重复了。

去掉.putMappingRequest("xivaik")是不可能的,所以我将构建结构的语句中去掉startObject("xivaik"),结果成功执行。

try
        {
            XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("properties").startObject("ajmc").field("type", "string")
                    .field("store", "yes").endObject().startObject("ajbh").field("type", "string").field("store", "yes").field("index", "not_analyzed").endObject()
                    .startObject("jyaq").field("type", "string").field("indexAnalyzer", "ik").field("searchAnalyzer", "ik").field("index", "analyzed").endObject()
                    .startObject("addDate").field("type", "date").endObject().endObject().endObject();

            PutMappingRequest mappingRequest = Requests.putMappingRequest("xivaik").type("infoaj").source(mapping);

            client.admin().indices().putMapping(mappingRequest).actionGet();

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

 

结果证明了前面的猜测。希望能够后来人一个参考。

 

分享到:
评论

相关推荐

    Springboot1.3.1+elasticsearch1.7.3集群

    以上内容涵盖了SpringBoot1.3.1与Elasticsearch1.7.3集群的关键知识点,包括集成方式、操作流程、查询机制、集群管理和性能优化等方面。通过理解并熟练掌握这些概念,可以有效地在SpringBoot应用中构建和使用Elastic...

    elasticsearch-1.7.3.tar.gz

    Elasticsearch 1.7.3 是一个早期版本的全文搜索和分析引擎,它属于Elastic Stack(前称为ELK stack)的一部分,其中包括Elasticsearch、Logstash、Kibana和Beats。这个版本的发布旨在提供高效、可扩展的搜索、日志...

    elasticsearch-1.7.0

    **Elasticsearch 1.7.0:搜索与分析引擎的里程碑版本** Elasticsearch,一个基于Lucene的开源搜索引擎,以其分布式、实时、可扩展的特性在IT领域备受推崇。1.7.0版是1.x系列的最终版本,标志着这一系列的成熟与稳定...

    mybatisMapped报错 Statements collection does not contain value for

    ### mybatisMapped报错 Statements collection does not contain value for 在使用MyBatis框架进行数据库操作时,可能会遇到“Mapped Statements collection does not contain value for”这样的错误提示。这通常...

    JAVA使用ElasticSearch查询in和not in的实现方式

    JAVA使用ElasticSearch查询in和not in的实现方式 Elasticsearch是一个基于Lucene的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它是用Java开发的,并作为Apache许可条款下的开放...

    elasticsearch-1.7.1

    **Elasticsearch 1.7.1:一个早期版本的分布式搜索引擎** Elasticsearch是一个开源的、基于Lucene的全文搜索引擎,它以分布式、实时、弹性(Fault Tolerant)和横向扩展为特点,被广泛应用于日志分析、监控、搜索、...

    elasticsearch1.7.1、head插件

    **Elasticsearch 1.7.1:搜索引擎的基石** Elasticsearch 是一款高度可扩展的开源全文搜索引擎,设计目标是实现快速、可扩展的搜索和分析引擎。它基于 Lucene 库,提供了分布式、多租户功能,适用于各种数据类型,...

    一款基于Java注解的elasticsearch mapping生成工具,支持ES 5.2.0所有可选参数.zip

    而标题中提到的"一款基于Java注解的elasticsearch mapping生成工具",正是针对这一需求,为开发者提供了一种简洁且高效的方式来创建和管理ES的映射。 **Java注解与Elasticsearch Mapping** Java注解是一种元数据,...

    解决Docker启动Elasticsearch7.x报错的问题

    使用Docker run 命令 docker run -d -p 9200:9200 -p 9300:9300 –name 用户自定义名字 容器ID 会看到一串字符串,一般情况下我们会误以为它启动成功 我们执行docker ps -a是发现它自动退出了 ...

    elasticsearch-1.7.3.jar

    Elasticsearch 子项目:服务器 org.elasticsearch/elasticsearch/1.7.3/elasticsearch-1.7.3.jar

    elasticsearch 启动报错

    报错信息提示"can not run elasticsearch as root",意味着在尝试用root用户启动Elasticsearch服务,但这是不被允许的。 自Elasticsearch 6.x版本开始,出于安全性考虑,官方明确禁止以root用户身份运行Elastic...

    elasticsearch与kibana环境安装与es的基本操作.docx

    6. 重启服务器,因为Elasticsearch的安全策略,不应以root用户启动,所以创建新用户,给予Elasticsearch目录权限,并用新用户启动Elasticsearch,通过 `./elasticsearch` 命令。 7. 通过 `...

    elasticsearch-head-compile-after.tar.gz

    1. **解压源码**:首先,将 "elasticsearch-head-compile-after.tar.gz" 解压到你的工作目录,例如 `tar -zxvf elasticsearch-head-compile-after.tar.gz`。 2. **运行elasticsearch-head**:解压后,找到包含 ...

    elasticsearch5.6.5自己编译安装包,可以用root用户启动

    标签"es5.6 安装包 root启动"进一步强调了这个安装包的特性,即它专为Elasticsearch 5.6.5版本设计,并且重点在于允许root用户的启动功能。这使得在没有其他非root用户账户或者需要快速部署的情况下非常有用。 ...

    elasticsearch-head-compile-after.tar.gz+node-v8.1.2-linux-x64.ta

    标题中的"elasticsearch-head-compile-after.tar.gz"和"node-v8.1.2-linux-x64.ta"分别指的是两个不同的软件组件。首先,Elasticsearch是一个流行的开源搜索引擎和分析平台,广泛应用于大数据检索、日志分析和实时...

    elasticsearch 报错问题汇总

    在搭建 Elasticsearch 服务时,可能会遇到一系列报错问题,这些错误通常与系统资源限制、配置不当或权限不足有关。在 CentOS7 上安装 Elasticsearch 时,常见的问题和解决方案如下: 1. **内存分配失败**: 报错...

    ES常见启动报错解决办法

    ES常见启动报错解决办法汇总

    arcgis-elasticSearch-es-矢量数据导入插件-数据建模-mapping-indexsetting-字段映射

    arcgis elasticSearch es 矢量数据导入插件 数据建模 mapping indexsetting 字段映射 索引建模支持geoshape、shape,text索引支持keyword/ngram/edgeNgram/ikSmart,快速导入,兼容multipolygon,带洞,多面,使用时...

    vscode 报错之 Could not read source map for file... 解决方案

    vscode 报错之 Could not read source map for file... 解决方案

Global site tag (gtag.js) - Google Analytics