elasticsearch的javaAPI之index
来源:互联网 发布:mac照片导出到移动硬盘 编辑:程序博客网 时间:2024/06/04 18:09
Index API
原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html
index API允许你将JSON document转换为一个特定的index,使它便于搜索操作。
生成JSON文档:
有几种不同的方法生成一个JSON document:
- 手动使用
byte[]
或String
- 使用一个map来等效转换为JSON
- 使用第三方库来将beans装换(如Jackson)
- 使用内置的XContentFactory.jsonBuilder()
在内部,每一个类型转换为 byte[]
(所以String转换到byte[]
)。 因此,如果对象是已经在这个形式, 就直接使用它。jsonBuilder 是
高度优化的JSON生成机制,用来直接构造为byte[]
。
动手试一试:
这里没有特别困难的,但请注意,您将必须根据DateFormate来格式化日期。
String json = "{" + "\"user\":\"kimchy\"," + "\"postDate\":\"2013-01-30\"," + "\"message\":\"trying out Elasticsearch\"" + "}";
使用map
map是一个关键:值对集合。 它较好的表示JSON 结构:
Map<String, Object> json = new HashMap<String, Object>();json.put("user","kimchy");json.put("postDate",new Date());json.put("message","trying out Elasticsearch");
序列化beans
Elasticsearch已经使用jackson,在org.elasticsearch.common.jackson
包中。 所以,你可以添加自己Jackson版本到pom.xml
文件或在你的classpath中。
例如:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.3</version></dependency>
然后,您可以开始序列化JSON bean:
import com.fasterxml.jackson.databind.*;// instance a json mapperObjectMapper mapper = new ObjectMapper(); // create once, reuse// generate jsonString json = mapper.writeValueAsString(yourbeaninstance);
使用Elasticsearch helpers
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()
方法。
String json = builder.string();
Indexdocument:
下面的示例索引将JSON document转换为一个索引 (twitter),type为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();
请注意,您也可以index document作为JSON Strings,你不用给一个ID:
String json = "{" + "\"user\":\"kimchy\"," + "\"postDate\":\"2013-01-30\"," + "\"message\":\"trying out Elasticsearch\"" + "}";IndexResponse response = client.prepareIndex("twitter", "tweet") .setSource(json) .execute() .actionGet();
IndexResponse
对象将给你一个report:
// Index nameString _index = response.getIndex();// Type nameString _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();
如果你使用percolation构造索引, IndexResponse
对象会给相应的过滤器:
IndexResponse response = client.prepareIndex("twitter", "tweet", "1") .setSource(json) .execute() .actionGet();List<String> matches = response.matches();
Operation threading:
Index API允许你设置线程来执行操作,实际执行API上执行的是相同的节点(API上执行一个分配在同一服务器的shard上)。
不同的线程上执行操作,或调用线程执行(注意,API仍然是异步)。默认情况下, operationThreaded
被设置为true,
这意味着操作是由不同的线程上执行。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html
翻译欠佳,希望不会对大家造成误导
- elasticsearch的javaAPI之index
- ElasticSearch的javaAPI之Client
- elasticsearch的javaAPI之query
- Elasticsearch的javaAPI之percolator
- Elasticsearch的javaAPI之get,delete,bulk
- Elasticsearch的javaAPI之query dsl-queries
- Elasticsearch的javaAPI之Query DSL-filters
- Elasticsearch的javaAPI之facet,count,delete by query
- elasticsearch之index模块
- elasticsearch-java api之索引(index)的各种操作
- javaAPI连接Elasticsearch
- Elasticsearch JavaAPI 创建索引
- ElasticSearch javaAPI demo示例
- elasticsearch index 的 type 解释
- 使用elasticsearch的index template
- elasticsearch学习javaAPI:es的增删改查
- Elasticsearch系列篇之Get Index
- elasticsearch之Document APIs【Index API】
- nike air max Ldpo aGDX dnmNX
- (hiho一下 第十九周)线段树之查询空间最小值
- hadoop例子
- poj 1012
- 触摸机制
- elasticsearch的javaAPI之index
- POJ 2560 Freckles(最小生成树)
- java集合框架
- ActiveX控件的注册
- Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
- linux常见错误解答汇总
- Atitit.故障排除系列---php 程序网站数据库错误排除流程
- 黑马程序猿_OC之核心语法(上)
- Redis源码整体运行流程详解