索引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 索引(三)相关推荐

  1. elasticsearch Java API 索引API

    2019独角兽企业重金招聘Python工程师标准>>> 对于索引API,总得来说,就是三步: 1.一个构建JSON格式的doc(文档): 2.调用API来创建文件即可(此处将JSON ...

  2. elasticsearch 中文API river

    river-jdbc 安装 ./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/pl ...

  3. 免费的编程中文书籍索引(2018第三版)

    之前我在 github 上整理了来一份:free-programming-books-zh_CN(免费的计算机编程类中文书籍). 截至目前为止,已经在 GitHub 收获了 40000 多的 star ...

  4. ElasticSearch Java Api(四) -删除索引

    删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...

  5. ElasticSearch Java Api(一) -创建索引

    ElasticSearch Java API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/jav ...

  6. 视频框架 Vitamio 使用教程+部分心得 (三) 视频控制器MediaController + 部分中文API

    转载注明出处: http://blog.csdn.net/u010181592/article/category/5893483 文章出自 我不只是看客/NotLooker的博客 先列出参考资料: V ...

  7. 免费的编程中文书籍索引【收藏速度】

    语言无关类 PyTab在线手册中心 ImportNew 廖雪峰的官方网站 程序员博客墙 操作系统 开源世界旅行手册 鸟哥的Linux私房菜 Linux 系统高级编程 The Linux Command ...

  8. 免费的编程中文书籍索引【必须转载、有空必看】

    免费的编程中文书籍索引 免费的编程中文书籍索引 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版. stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 ...

  9. jstree中文api文档_开发中文 API 的一些策略

    注:本文仅基于个人在其他英文编程语言中实现中文 API 的有限实践和见闻,对易语言等等中文编程语言的生态不甚了解,各种疏漏请指正. 如果要现在的我,选择一个英文 API 进行中文化,或者针对一种功能开 ...

  10. ElasticSearch学习总结(三):查询总结

    ElasticSearch学习总结(三):查询总结 本文主要对Elasticsearch中查询相关的知识做一个简单的总结,内容主要包括查询的评分机制,查询改写,过滤器,以及对常见的查询做一个简单的分类 ...

最新文章

  1. 【ACM】杭电OJ 2012。
  2. [C# Control] 仿RAR式进度条 (RarProgressBar)
  3. 各种flash的不同
  4. 2021年春季学期-信号与系统-第六次作业参考答案-第三小题
  5. 微信小程序轮播中的current_微信小程序 swiper轮播图的按钮切换
  6. 20.IDA-修改二进制文件、显示修改点
  7. VARIANT变体类型数据
  8. 关于如何调用Datalist里面的Datalist
  9. 从底层看云:云计算准备好了么?
  10. javascrip之prototype
  11. 整理了20个最全的设计师学习网站,推荐收藏!
  12. 我,是如何度过人生最艰难的时刻的
  13. 初识人工智能AI(基本概念)
  14. 分享这些值得收藏的软件,千万别错过
  15. 基于MVS的三维重建算法学习笔记(二)— 立体视觉的几何基础总结
  16. ocr文字识别技术有什么意义
  17. 帆软bi 观远bi_与电源bi一起加入
  18. Linux minerd木马清除(续)
  19. docker 中文乱码解决
  20. 【C】39.程序中的三国天下

热门文章

  1. 基于netty实现socketio的聊天室
  2. Linux inode的正确理解
  3. 工信部同意中国互联网信息中心设立域名根服务器及运行机构
  4. Android 之神 Jake Wharton 从 Square 离职!
  5. 从0开始学习 GitHub 系列之「Git 速成」
  6. PHP关闭自动过滤,php怎么关闭自动过滤输入和输出
  7. php编写文章发布程序教程,PHP开发文章发布系统之后台文章修改处理程序
  8. datagridview第一列不显示_这些平时你不常用的Excel技巧,它的功能却是强大的
  9. hive 修改cluster by算法_Spark SQL连接 Hive源码深度剖析
  10. linux中级之netfilter防火墙(firewalld)