Elasticsearch demo
来源:互联网 发布:log4j linux 日志格式 编辑:程序博客网 时间:2024/06/05 03:08
package com.xuyw.blog;import java.io.IOException;import java.net.InetAddress;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.elasticsearch.action.delete.DeleteResponse;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.elasticsearch.index.query.QueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.script.Script;import org.elasticsearch.script.ScriptService;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.SearchHits;import org.elasticsearch.transport.client.PreBuiltTransportClient;import org.junit.Before;import org.junit.Test;import static org.elasticsearch.common.xcontent.XContentFactory.*;import com.alibaba.fastjson.JSON;import com.xuyw.model.Blog;public class BlogTest { private TransportClient client = null; @SuppressWarnings("resource") @Before public void before() throws Exception { Map<String, String> map = new HashMap<>(); map.put("cluster.name", "my-application"); Settings settings = Settings.builder().put(map).build(); client = new PreBuiltTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300)); System.out.println("Started ES client"); } /** * 创建索引 */ @Test public void testCreateIndex() { String json = "{" + "\"user\":\"xuyw\"," + "\"postDate\":\"2017-12-08\"," + "\"message\":\"Elasticsearch demo\"" + "}"; IndexResponse response = client.prepareIndex("twitter", "article", "1").setSource(json).get(); System.out.println(" 索引名称:" + response.getIndex()); System.out.println(" 类型名称:" + response.getType()); System.out.println(" 文档id:" + response.getId()); System.out.println(" 版本:" + response.getVersion()); } /** * 添加数据 */ @Test public void testAddData() { List<String> jsonData = new ArrayList<>(); jsonData.add(JSON.toJSONString(new Blog(1, "git简介", "2016-06-19", "SVN与Git最主要的区别..."))); jsonData.add(JSON.toJSONString(new Blog(2, "Java中泛型的介绍与简单使用", "2016-06-19", "学习目标 掌握泛型的产生意义..."))); jsonData.add(JSON.toJSONString(new Blog(3, "SQL基本操作", "2016-06-19", "基本操作:CRUD ..."))); jsonData.add(JSON.toJSONString(new Blog(4, "Hibernate框架基础", "2016-06-19", "Hibernate框架基础..."))); jsonData.add(JSON.toJSONString(new Blog(5, "Shell基本知识", "2016-06-19", "Shell是什么..."))); for (int i = 0; i < jsonData.size(); i++) { IndexResponse response = client.prepareIndex("twitter", "article").setSource(jsonData.get(i)).get(); // 输出结果 System.out.println(JSON.toJSON(response)); } } /** * 查找 */ @Test public void testQuery() { // 搜索数据 GetResponse response = client.prepareGet("twitter", "article", "1").execute().actionGet(); // 输出结果 System.out.println(response.getSourceAsString()); } /** * 查找 */ @Test public void testQuery2() { // 单个字段的查询 QueryBuilder qb1 = QueryBuilders.termQuery("title", "hibernate"); // 多个字段的查询 QueryBuilder qb2 = QueryBuilders.multiMatchQuery("git", "title", "content"); // 搜索数据 SearchResponse response = client.prepareSearch("twitter").setTypes("article").setQuery(qb1).execute() .actionGet(); SearchHits hits = response.getHits(); if (hits.totalHits() > 0) { for (SearchHit hit : hits) { System.out.println("score:" + hit.getScore() + ":\t" + hit.getSource());// .get("title") } } else { System.out.println("搜到0条结果"); } } @Test public void testUpdate() throws Exception { // 方法一:创建一个UpdateRequest,然后将其发送给client. UpdateRequest uRequest = new UpdateRequest(); uRequest.index("twitter"); uRequest.type("article"); uRequest.id("1"); uRequest.doc(jsonBuilder().startObject().field("content", "学习目标 掌握java泛型的产生意义update").endObject()); // client.update(uRequest).get(); // 方法二:prepareUpdate() 使用脚本更新索引 // elasticsearch.yml,新增一行:script.engine.groovy.inline.update: on /* * client.prepareUpdate("twitter", "article", "1").setScript(new * Script("ctx._source.title = \"git入门\"")).get(); */ // 方法三:prepareUpdate() 使用doc更新索引 /* * client.prepareUpdate("twitter", "article", "1") * .setDoc(jsonBuilder().startObject().field("content", * "SVN与Git对比。。。").endObject()).get(); */ // 方法四: 增加新的字段 UpdateRequest updateRequest = new UpdateRequest("twitter", "article", "1") .doc(jsonBuilder().startObject().field("commet", "0").endObject()); // client.update(updateRequest).get(); // 方法五:upsert 如果文档不存在则创建新的索引 IndexRequest indexRequest = new IndexRequest("twitter", "article", "10").source( jsonBuilder().startObject().field("title", "Git安装10").field("content", "学习目标 git。。。10").endObject()); UpdateRequest uRequest2 = new UpdateRequest("twitter", "article", "10") .doc(jsonBuilder().startObject().field("title", "Git安装").field("content", "学习目标 git。。。").endObject()) .upsert(indexRequest); client.update(uRequest2).get(); } @Test public void testDelete() { //ID 删除 DeleteResponse dResponse = client.prepareDelete("twitter", "article", "10").execute().actionGet(); System.out.println(JSON.toJSONString(dResponse)); }}
阅读全文
0 0
- Elasticsearch demo
- kafka strom elasticsearch demo
- elasticsearch java api demo
- ElasticSearch搜索demo
- elasticsearch demo详解
- ElasticSearch javaAPI demo示例
- Elasticsearch基本概念与Demo说明
- elasticsearch分词聚合查询demo
- Jmeter http请求 Demo(压测Elasticsearch)
- elasticsearch(一) 基础入门级demo
- elasticsearch painless脚本使用(附demo及painless API)
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(六) ElasticSearch demo演示
- ElasticSearch
- Elasticsearch
- Elasticsearch
- ElasticSearch
- elasticSearch
- elasticsearch
- android读取word文档的方法:一,第三方应用打开
- fsync、synchronous_commit 的简单测试
- get请求传递中文后台乱码
- php的AES-128 EBC加密、解密
- Place the Robots ZOJ1645
- Elasticsearch demo
- Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
- ViewPager+RadioGroup实现仿微信主界面
- 第九周周总结
- 怎样鉴别电热管质量
- virtualenv env出错问题
- MSP430学习笔记-时钟
- Mysql InnoDB删除数据后释放磁盘空间的方法
- 底层:http模块express