elasticsearch的javaAPI之index
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 mapper
ObjectMapper mapper = new ObjectMapper(); // create once, reuse // generate json
String 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 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();
假设你使用percolation构造索引, IndexResponse对象会给对应的过滤器:
IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
.setSource(json)
.execute()
.actionGet();
List<String> matches = response.matches();
Operation threading:
Index API同意你设置线程来运行操作,实际运行API上运行的是同样的节点(API上运行一个分配在同一server的shard上)。
不同的线程上运行操作,或调用线程运行(注意,API仍然是异步)。
默认情况下, operationThreaded 被设置为true。这意味着操作是由不同的线程上运行。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html
翻译欠佳,希望不会对大家造成误导
elasticsearch的javaAPI之index的更多相关文章
- Elasticsearch的javaAPI之percolator
Elasticsearch的javaAPI之percolator percolator同意一个在index中注冊queries,然后发送包括doc的请求,返回得到在index中注冊过的而且匹配doc的 ...
- elasticsearch的javaAPI之query
elasticsearch的javaAPI之query API the Search API同意运行一个搜索查询,返回一个与查询匹配的结果(hits). 它能够在跨一个或多个index上运行, 或者一 ...
- Elasticsearch的javaAPI之get,delete,bulk
Elsasticsearch的javaAPI之get get API同意依据其id获得指定index中的基于json document.以下的样例得到一个JSON document(index为twi ...
- Elasticsearch的javaAPI之query dsl-queries
Elasticsearch的javaAPI之query dsl-queries 和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl. 查询建造者 ...
- ElasticSearch的javaAPI之Client
翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-c ...
- 解决logstash.outputs.elasticsearch[main] Could not index event to Elasticsearch status 404
现象:lostack启动正常,logstack收集输入redis数据,输出到elasticsearch写入失败 提示:去建索引 的时候elasticsearch返回404 [2019-11-12T11 ...
- Elasticsearch之索引模板index template与索引别名index alias
为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模 ...
- springboot使用elasticsearch报No property index found for type错误
一.前提:项目之前使用springboot+spring-data-mongodb.现在需要加入elasticsearch做搜索引擎,这样mongo和elasticsearch共存了. 二.报错信息: ...
- 【ElasticSearch】:索引Index、文档Document、字段Field
因为从ElasticSearch6.X开始,官方准备废弃Type了.对应数据库,对ElasticSearch的理解如下: ElasticSearch 索引Index 文档Document 字段Fiel ...
随机推荐
- 微软ASP.NET网站部署指南(3):使用Web.Config文件的Transformations
1. 综述 大多数程序里都会在Web.config里设置參数,而且在部署的时候须要更改. 每次都手工更改这些配置非常乏味,也easy出错. 该章节将会告诉你假设通过自己主动化更新Web.config文 ...
- VMware-workstation安装
下载:百度搜索VMware-workstation 开始安装:VMware-workstation-full_12.5.5.17738 更改安装目录F:\softwore\VMware\VMware ...
- Android UI 优化 使用<include/>和 <merge />标签
使用<include /> 标签来重用layout代码 如果在一个项目中需要用到相同的布局设计,可以通过<include /> 标签来重用layout代码,该标签在Androi ...
- AngularJS 下拉列表demo
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- MSSQL执行大脚本文件时,提示“内存不足”的解决办法
导出了一个脚本文件,将近900M,回来往sql studio一丢,报了个内存不足,然后就有了此文.. 问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当 ...
- POJ 2446 匈牙利算法
题意: 思路: 二分图匹配... // by SiriusRen #include <cmath> #include <cstdio> #include <cstring ...
- SpringBoot(十一) Dubbo分布式与Zookeeper
Dubbo简介 1.Dubbo简介 1. Dubbo是什么? dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上 ...
- JavaScript基础知识-正则表达式
正则表达式 作用:定义一个特定的验证字符串内容规则的表达式 注:正则表达式并不是JavaScript独有的:JavaScript支持正则表达式 var a = { }; // 定义一个空对象 ...
- 快速搭建golden gate环境
准备操作系统用户和文件系统 准备安装和运行用户(操作系统用户) 建议使用Oracle用户 也可使用新建用户,但需做以下配置 该用户必须加入到oinstall组 该用户使用与oracle相同的profi ...
- PostgreSQL练习网站
PostgreSQL练习 http://pgexercises.com/index.html