熟悉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.
应该是我在构建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(); }
结果证明了前面的猜测。希望能够后来人一个参考。
相关推荐
自己搭建的springboot+elasticsearch集群,包含增删改查操作索引,根据部署文档操作即可。
是elasticsearch1.x系列的最后一个版本了。期待2.0的发布
ES1.7版本安装工具及说明教程在以下链接中:https://www.jianshu.com/p/c596caf31688
Elasticsearch 子项目:服务器 org.elasticsearch/elasticsearch/1.7.3/elasticsearch-1.7.3.jar
elasticsearch 启动报错, 报错信息如下: [root@hadoop-01 bin]# ./elasticsearch [2020-02-19T11:37:26,391][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main] org....
elasticsearch1.7.1(搜索引擎、head插件)。使用请参考
今天小编就为大家分享一篇关于JAVA使用Elasticsearch查询in和not in的实现方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
elasticsearch-1.7.1低版本
ES常见启动报错解决办法汇总
elasticsearch与kibana环境安装以及elasticsearch文档数据库使用可视化工具kibana对es数据库的基本操作 增删改查
在 centos7 上搭建 elasticsearch时,发生了一些报错,总结如下: 1. Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=’Cannot allocate ...
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
elasticsearch-head-compile-after.tar.gz+node-v8.1.2-linux-x64.ta
编译后的 elasticsearch-head 源码包,建议配合安装教程《如何安装 elasticsearch-head 插件?》一同使用
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
工作需要自己编译的elasticsearch5.6.5, 去除了root用户启动的限制;
From converting SQL statements into Elasticsearch queries to a console experience for exploring data using "SELECT x FROM y WHERE z > 1000" type queries, there's a lot on the horizon.
进入文件夹elasticsearch-6.2.4,执行命令gradlew assemble,编译完成后,进入目录elasticsearch-6.2.4/distribution/tar/build/distributions可以见到构建成功的结果:elasticsearch-6.2.4-SNAPSHOT.tar.gz,这就是...
分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene),本教程旨在带领大家进入搜索引擎领域,从无到有,深入浅出的讲解了什么是搜索引擎,搜索引擎的...