elasticsearch 中文API 索引(三)
索引API
索引API允许开发者索引类型化的JSON文档到一个特定的索引,使其可以被搜索。
生成JSON文档
有几种不同的方式生成JSON文档
- 利用
byte[]
或者作为一个String
手动生成 - 利用一个
Map
将其自动转换为相应的JSON - 利用第三方库如Jackson去序列化你的bean
- 利用内置的帮助函数XContentFactory.jsonBuilder()
手动生成
需要注意的是,要通过Date Format编码日期。
String json = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}";
使用map
Map<String, Object> json = new HashMap<String, Object>();
json.put("user","kimchy");
json.put("postDate",new Date()); json.put("message","trying out Elasticsearch");
序列化bean
elasticsearch早就用到了Jackson,把它放在了org.elasticsearch.common.jackson
下面。你可以在你的pom.xml
文件里面添加你自己的Jackson版本。
<dependency><groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.3</version> </dependency>
这样,你就可以序列化你的bean为JSON。
import com.fasterxml.jackson.databind.*;// instance a json mapper
ObjectMapper mapper = new ObjectMapper(); // create once, reuse// generate json String json = mapper.writeValueAsString(yourbeaninstance);
利用elasticsearch帮助类
elasticsearch提供了内置的帮助类来将数据转换为JSON
import static org.elasticsearch.common.xcontent.XContentFactory.*;XContentBuilder builder = jsonBuilder().startObject().field("user", "kimchy").field("postDate", new Date()) .field("message", "trying out Elasticsearch") .endObject()
注意,你也可以使用startArray(String)
和endArray()
方法添加数组。另外,field
可以接收任何类型的对象,你可以直接传递数字、时间甚至XContentBuilder对象。
可以用下面的方法查看json。
String json = builder.string();
索引文档
下面的例子将JSON文档索引为一个名字为“twitter”,类型为“tweet”,id值为1的索引。
import static org.elasticsearch.common.xcontent.XContentFactory.*;IndexResponse response = client.prepareIndex("twitter", "tweet", "1") .setSource(jsonBuilder() .startObject() .field("user", "kimchy") .field("postDate", new Date()) .field("message", "trying out Elasticsearch") .endObject() ) .execute() .actionGet();
你也可以不提供id:
String json = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}"; IndexResponse response = client.prepareIndex("twitter", "tweet") .setSource(json) .execute() .actionGet();
IndexResponse
将会提供给你索引信息
// Index name
String _index = response.getIndex();
// Type name
String _type = response.getType();
// Document ID (generated or not)
String _id = response.getId();
// Version (if it's the first time you index this document, you will get: 1)
long _version = response.getVersion();
如果你在索引时提供了过滤,那么IndexResponse
将会提供一个过滤器(percolator )
IndexResponse response = client.prepareIndex("twitter", "tweet", "1").setSource(json).execute().actionGet();List<String> matches = response.matches();
转载于:https://www.cnblogs.com/bmaker/p/5472429.html
elasticsearch 中文API 索引(三)相关推荐
- elasticsearch Java API 索引API
2019独角兽企业重金招聘Python工程师标准>>> 对于索引API,总得来说,就是三步: 1.一个构建JSON格式的doc(文档): 2.调用API来创建文件即可(此处将JSON ...
- elasticsearch 中文API river
river-jdbc 安装 ./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/pl ...
- 免费的编程中文书籍索引(2018第三版)
之前我在 github 上整理了来一份:free-programming-books-zh_CN(免费的计算机编程类中文书籍). 截至目前为止,已经在 GitHub 收获了 40000 多的 star ...
- ElasticSearch Java Api(四) -删除索引
删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...
- ElasticSearch Java Api(一) -创建索引
ElasticSearch Java API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/jav ...
- 视频框架 Vitamio 使用教程+部分心得 (三) 视频控制器MediaController + 部分中文API
转载注明出处: http://blog.csdn.net/u010181592/article/category/5893483 文章出自 我不只是看客/NotLooker的博客 先列出参考资料: V ...
- 免费的编程中文书籍索引【收藏速度】
语言无关类 PyTab在线手册中心 ImportNew 廖雪峰的官方网站 程序员博客墙 操作系统 开源世界旅行手册 鸟哥的Linux私房菜 Linux 系统高级编程 The Linux Command ...
- 免费的编程中文书籍索引【必须转载、有空必看】
免费的编程中文书籍索引 免费的编程中文书籍索引 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版. stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 ...
- jstree中文api文档_开发中文 API 的一些策略
注:本文仅基于个人在其他英文编程语言中实现中文 API 的有限实践和见闻,对易语言等等中文编程语言的生态不甚了解,各种疏漏请指正. 如果要现在的我,选择一个英文 API 进行中文化,或者针对一种功能开 ...
- ElasticSearch学习总结(三):查询总结
ElasticSearch学习总结(三):查询总结 本文主要对Elasticsearch中查询相关的知识做一个简单的总结,内容主要包括查询的评分机制,查询改写,过滤器,以及对常见的查询做一个简单的分类 ...
最新文章
- 【ACM】杭电OJ 2012。
- [C# Control] 仿RAR式进度条 (RarProgressBar)
- 各种flash的不同
- 2021年春季学期-信号与系统-第六次作业参考答案-第三小题
- 微信小程序轮播中的current_微信小程序 swiper轮播图的按钮切换
- 20.IDA-修改二进制文件、显示修改点
- VARIANT变体类型数据
- 关于如何调用Datalist里面的Datalist
- 从底层看云:云计算准备好了么?
- javascrip之prototype
- 整理了20个最全的设计师学习网站,推荐收藏!
- 我,是如何度过人生最艰难的时刻的
- 初识人工智能AI(基本概念)
- 分享这些值得收藏的软件,千万别错过
- 基于MVS的三维重建算法学习笔记(二)— 立体视觉的几何基础总结
- ocr文字识别技术有什么意义
- 帆软bi 观远bi_与电源bi一起加入
- Linux minerd木马清除(续)
- docker 中文乱码解决
- 【C】39.程序中的三国天下
热门文章
- 基于netty实现socketio的聊天室
- Linux inode的正确理解
- 工信部同意中国互联网信息中心设立域名根服务器及运行机构
- Android 之神 Jake Wharton 从 Square 离职!
- 从0开始学习 GitHub 系列之「Git 速成」
- PHP关闭自动过滤,php怎么关闭自动过滤输入和输出
- php编写文章发布程序教程,PHP开发文章发布系统之后台文章修改处理程序
- datagridview第一列不显示_这些平时你不常用的Excel技巧,它的功能却是强大的
- hive 修改cluster by算法_Spark SQL连接 Hive源码深度剖析
- linux中级之netfilter防火墙(firewalld)