elasticsearch之入门hello(java)一
1.书写pom.xml文件
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.37</version>
</dependency>
</dependencies>
2.创建一个文档
@Test //创建一个文档
public void test01() throws Exception {
// 创建连接elasticsearch服务器对象
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
// 描述json对象
XContentBuilder xContentBuilder = XContentFactory
.jsonBuilder()
.startObject()
.field("id", 1)
.field("content",
"QQ音乐是腾讯公司推出的一款网络音乐服务产品,海量音乐在线试听、新歌热歌在线首发、歌词翻译、手机铃声下载、高品质无损音乐试听、海量无损曲库、正版音乐下载、空间")
.field("title", "QQ音乐-千万正版音乐海量无损曲库新歌热歌天天畅听的高").endObject();
client.prepareIndex("jk1", "article", "1").setSource(xContentBuilder)
.get();
client.close(); }
测试:
创建成功
检索数据(全文)
@Test//对全文进行搜索
public void test02() throws Exception{
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
//搜索数据
SearchResponse response = client.prepareSearch("jk1").setTypes("article").setQuery(QueryBuilders.matchAllQuery()).get();
//获取命中次数
SearchHits hits = response.getHits();
System.out.println("命中的次数为:"+hits.getTotalHits());
for (Iterator iterator = hits.iterator(); iterator.hasNext();) {
SearchHit searchHit = (SearchHit) iterator.next();
System.out.println(searchHit.getSourceAsString());
}
}
检索数据(字段检索) 会对需要查询的词进行分词的
@Test //对所有字段进行分词查询
public void test03() throws Exception{
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
//搜索数据
SearchResponse response = client.prepareSearch("jk1").setTypes("article").setQuery(QueryBuilders.queryStringQuery("QQ腾讯")).get();
//获取命中次数
SearchHits hits = response.getHits();
System.out.println("tes3t命中的次数为:"+hits.getTotalHits());
for (Iterator iterator = hits.iterator(); iterator.hasNext();) {
SearchHit searchHit = (SearchHit) iterator.next();
System.out.println(searchHit.getSourceAsString()); }
}
查询结果
检索数据(模糊查询) 不会对需要查询的词条进行重新分词
@Test //模糊查询
public void test04() throws Exception{
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
//搜索数据
SearchResponse response = client.prepareSearch("jk1").setTypes("article").setQuery(QueryBuilders.wildcardQuery("content", "*QQ*")).get();
//获取命中次数
SearchHits hits = response.getHits();
System.out.println("命中的次数为:"+hits.getTotalHits());
for (Iterator iterator = hits.iterator(); iterator.hasNext();) {
SearchHit searchHit = (SearchHit) iterator.next();
System.out.println(searchHit.getSourceAsString()); }
}
查询结果:命中的次数为:0
创建索引
@Test
// 创建索引
public void test01() throws IOException {
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
client.admin().indices().prepareCreate("jk2").get(); }
删除索引
@Test
// 删除索引
public void test02() throws IOException {
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
client.admin().indices().prepareDelete("jk2").get();
}
创建映射
@Test
// 映射文件 的操作
public void test03() throws Exception {
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
// 描述json对象 创建连接搜索服务器对象
XContentBuilder xContentBuilder = XContentFactory.jsonBuilder()
.startObject().startObject("article").startObject("properties")
.startObject("id").field("type", "String")
.field("store", "yes").endObject().startObject("title")
.field("type", "string").field("store", "yes")
.field("analyzer", "ik").endObject().startObject("content")
.field("type", "string").field("store", "yes")
.field("analyzer", "ik").endObject().endObject().endObject()
.endObject();
PutMappingRequest mappingRequest = Requests.putMappingRequest("jk2")
.type("article").source(xContentBuilder);
client.admin().indices().putMapping(mappingRequest).get();
// 关闭连接
client.close();
}
文档的操作
@Test
// 映射文件 的操作
public void test04() throws Exception {
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
// 描述json 数据
/*
* {id:xxx, title:xxx, content:xxx}
*/
Article article = new Article();
article.setId("2");
article.setTitle("搜索工作其实很henbu快乐");
article.setContent("我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。"); String jsonString = JSON.toJSONString(article);
// 建立文档
client.prepareIndex("jk2", "article", article.getId().toString())
.setSource(jsonString).get();
//修改文档
// client.prepareUpdate("jk2", "article", article.getId().toString()).setDoc(jsonString).get();
// client.update(new UpdateRequest("jk2", "article", article.getId().toString()).doc(jsonString)).get(); //删除文档
// client.prepareDelete("jk2", "article", article.getId().toString()).get();
// client.delete(new DeleteRequest("jk2", "article", article.getId().toString())).get();
// 关闭连接
client.close();
}
elasticsearch之入门hello(java)一的更多相关文章
- ElasticSearch入门-搜索(java api)
ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper; import java.util.Map; import net.sf.json ...
- Elasticsearch从入门到精通-Elasticsearch是什么
作者其他ELK快速入门系列文章 logstash快速入门实战指南 Kibana从入门到精通 一.前言 驱动未来商业发展的最重要“能源”不是石油,而是数据.我们还来不及了解它,这个世界已经被它淹没.多年 ...
- Elasticsearch 基础入门
原文地址:Elasticsearch 基础入门 博客地址:http://www.extlight.com 一.什么是 ElasticSearch ElasticSearch是一个基于 Lucene 的 ...
- SpringBoot系列之Elasticsearch极速入门与实际教程
@ 目录 一.什么Elasticsearch? 二.Elasticsearch安装部署 2.1 Elasticsearch安装环境准备 2.2 Docker环境安装Elasticsearch 2.3 ...
- Thrift入门及Java实例演示<转载备用>
Thrift入门及Java实例演示 作者: Michael 日期: 年 月 日 •概述 •下载配置 •基本概念 .数据类型 .服务端编码基本步骤 .客户端编码基本步骤 .数据传输协议 •实例演示(ja ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- Elasticsearch 1.X 版本Java插件开发
接上一篇<Elasticsearch 2.X 版本Java插件开发简述> 开发1.X版本elasticsearch java插件与2.X版本有一些不同,同时在安装部署上也有些不同,主要区别 ...
- Elasticsearch 2.X 版本Java插件开发简述
1:elasticsearch插件分类简述 2:Java插件开发要点 3:如何针对不同版本elasticsearch提供多版本的插件 4:插件具有外部依赖时遇到的一些问题(2016-09-07更新) ...
- Java开发者必备的10大学习网站,送给入门学习java的你,请收下!
作为开发者来说,必备的除了对编码的热情还要有自己的一套技巧,另外不可缺少的就是平时学习的网站.以下本人收集的 Java 开发者必备的网站,这些网站可以提供信息.以及一些很棒的讲座 , 还能解答一般问题 ...
随机推荐
- 将json转换为数据结构体
主要用到的依赖:(划重点:这个依赖需要加jdk版本号,不加的话用不了,且目前最高是jdk15) (ps: 用于json与其他类型格式转换,JSONObject, JSONArray等来自这个包) &l ...
- django之用户表的继承
有这样一个场景,之前已经设计好了用户的信息表,但是再设计另外一个业务表的时候,信息有点重复,如何重新设计呢? 可以采用表的继承,让一个表作为基类,业务表就可以继承它 要注意以下几点 1 作为基类的表使 ...
- 函数内联 inline,__inline,__forceinline
▶ 感谢大佬的总结[http://www.cnblogs.com/xuemaxiongfeng/articles/2464850.html] ● 存储限定符 __inline 与关键字 inline ...
- 分布式计算课程补充笔记 part 1.5
▶ 编写 SLURM 脚本 #!/bin/bash #SBATCH -J name # 任务名 #SBATCH -p gpu # 分区名,可为 cpu 或 gpu #SBATCH -N # 节点数 # ...
- threading join用法
join():在子线程完成运行之前,这个子线程的父线程将一直被阻塞 import threading #线程import time def Beijing(n): print('Beijing tim ...
- Javascript中 toFixed
javascript中toFixed使用的是银行家舍入规则. 银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法. 简单来说就是:四舍六入五考虑,五后非零就进一,五后为零 ...
- keepalive高可用
Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepalived除了能够管理LVS软 ...
- db2常见命令
增加db2top命令的refresh间隔,默认值为2秒,下面的命令就可以每10秒刷新一次: $ db2top -i 10 -d sample 数据库本身太繁忙(dynamic SQL过多).建议增加 ...
- python 读取excel数据
import xlrd book = xlrd.open_workbook(file_path)#打开文件 sheet = book.sheet_by_index(0) #获取第一个工作簿 print ...
- mysql 查询语句严格区分大小写
一般情况下mysql 查询是不会区分大小写的,执行查询语句select id,current_unit from knowledge_attributes where current_unit = ...