java引入es使用
引入依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
初始化对象
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
HttpHost.create("http://192.168.150.101:9200")
));
索引CRUD操作
public class ElasticIndexTest {
private RestHighLevelClient client;
@BeforeEach
void setUp(){
client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.88.95",9200,"http")));
} @AfterEach
void tearDown() throws IOException {
if(client!=null)
client.close();
} @Test
void create() throws IOException {
CreateIndexRequest test = new CreateIndexRequest("hmall");
test.source(MAPPING_TEMPLATE, XContentType.JSON);
client.indices().create(test, RequestOptions.DEFAULT);
}
@Test
void get() throws IOException {
GetIndexRequest test = new GetIndexRequest("hmall");
client.indices().get(test, RequestOptions.DEFAULT);
}
@Test
void delete() throws IOException {
DeleteIndexRequest test = new DeleteIndexRequest("hmall");
client.indices().delete(test, RequestOptions.DEFAULT);
}
private final static String MAPPING_TEMPLATE="{\n" +
" \"mappings\": {\n" +
" \"properties\": {\n" +
" \"id\":{\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"name\":{\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"ik_smart\"\n" +
" },\n" +
" \"price\":{\n" +
" \"type\": \"integer\"\n" +
" },\n" +
" \"image\":{\n" +
" \"type\": \"keyword\",\n" +
" \"index\": false\n" +
" },\n" +
" \"category\":{\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"brand\":{\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"sold\":{\n" +
" \"type\": \"integer\"\n" +
" },\n" +
" \"comment_count\":{\n" +
" \"type\": \"integer\",\n" +
" \"index\": false\n" +
" },\n" +
" \"isAD\":{\n" +
" \"type\": \"boolean\" \n" +
" },\n" +
" \"update_time\":{\n" +
" \"type\": \"date\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
}
文档CRUD操作
public class ElasticDocumentTest {
@Autowired
private IItemService service;
private RestHighLevelClient client;
@BeforeEach
void setUp(){
client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.88.95",9200,"http")));
} @AfterEach
void tearDown() throws IOException {
if(client!=null)
client.close();
} /* 新增
* 全量修改:写入重复ID即视为全量修改
* */
@Test
void addAndUpdateDoc() throws IOException {
Item byId = service.getById("317578");
ItemDoc itemDoc = BeanUtil.copyProperties(byId, ItemDoc.class); IndexRequest request=new IndexRequest("hmall").id(itemDoc.getId());
request.source(JSONUtil.toJsonStr(itemDoc),XContentType.JSON);
client.index(request,RequestOptions.DEFAULT);
}
/*局部修改*/
@Test
void updateDoc() throws IOException {
UpdateRequest request=new UpdateRequest("hmall","317578");
request.doc(
"price","25600"
);
client.update(request,RequestOptions.DEFAULT);
}
/*查询*/
@Test
void getDoc() throws IOException {
GetRequest getRequest=new GetRequest("hmall","317578");
GetResponse response = client.get(getRequest, RequestOptions.DEFAULT);
String json = response.getSourceAsString();
ItemDoc itemDoc = JSONUtil.toBean(json, ItemDoc.class);
}
/*删除*/
@Test
void deleteDoc() throws IOException {
DeleteRequest deleteRequest=new DeleteRequest("hmall","317578");
client.delete(deleteRequest, RequestOptions.DEFAULT); }
}
文档批处理操作:
/*批处理*/
@Test
void bulkDoc() throws IOException {
int pageSize=500;
int pageNum=1;
while(true){
Page<Item> page = service.lambdaQuery()
.eq(Item::getStatus, 1)
.page(Page.of(pageNum, pageSize));
List<Item>items=page.getRecords();
if(items==null||items.isEmpty()){
return;
}
BulkRequest request=new BulkRequest(); for (Item item : items) {
request.add(new IndexRequest("hmall")
.id(item.getId().toString())
.source(JSONUtil.toJsonStr(BeanUtil.copyProperties(item, ItemDoc.class)),XContentType.JSON)
);
}
client.bulk(request,RequestOptions.DEFAULT);
pageNum++;
} }
java引入es使用的更多相关文章
- Java操作ES
一.ES基本概念 1. 节点:Elastic是一个分布式数据库,每个数据库实例是一个节点Node,一台服务器上可以有多个Node,可以多台服务器协同工作 2. 集群:一组节点Node构成一个集群Clu ...
- Elasticsearch笔记五之java操作es
Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...
- Java引入的一些新特性
Java引入的一些新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程, ...
- java 引入自定义字体font后出现的硬盘吃光的问题
有个需求要用美术字体在图片上写字 用自定义的文字有两个方法: 1. Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, InputStream ...
- 基于java的ES开发
3.1 环境配置 Jdk 1.8及以上 Elasticsearch.client 5.5.2(与服务器版本一致) Log4j 2.7及以下 maven工程必要的jar包依赖 <project x ...
- JAVA 引入 junit工具框架
我遇到的麻烦 : 开始直接按照视频上的来做,直接也是引入的他上面的jar ,但是我只引入了一个,就是上面的junit-4.4.jar,然后就会报错,会出现,空指针的错误, 后面我又按照网上的教程 这里 ...
- 4、2 java 使用es
1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- java——引入第三方jar包
第一步:项目->New->Folder:创建一个文件夹: 第二步:把要引入的jar包粘贴到新建的文件夹中: 第三步:选中引入的jar包->Build Path->Add to ...
- Java创建ES索引实现
1.pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- maven-腾讯SDK(QQ)接口java引入pom配置
maven的pom.xml配置 <dependency> <groupId>net.gplatform</groupId> <artifactId>Sd ...
随机推荐
- Understanding Swift’s value type thread safety - 代码分析(一)
结构体并不代表线程安全,swift在此上未做保证 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurrentPe ...
- bash: _get_comp_words_by_ref: command not found 报错
没有安装补全的包 错误信息 bash: _get_comp_words_by_ref: command not found 表明你的 shell 中可能存在补全功能的问题. 通常,这种错误发生在你的系 ...
- 2D 3D 景深 动画 阴影
2D 二维的平面空间,让元素在X轴或者Y轴进行变化 2D里面的功能函数 2D-位移 2D-旋转 2D-缩放 2D-倾斜 变形属性 transform:: 位移:transform:translate( ...
- INFINI Labs 产品更新 | Easysearch 优化字段压缩提升写入速度,Console 优化数据迁移和校验等功能
INFINI Labs 产品又更新啦~.本次更新概要如下:Easysearch 增强 source_reuse 压缩功能,并大幅提升写入速度:Console 优化了数据迁移和校验功能,新增了通用的数据 ...
- Spark-submit常用任务命令参数和说明
Spark常用任务命令参数和说明 spark-submit \ --name task2018072711591669 \ --master yarn --deploy-mode client \ - ...
- EF 字段 4位小数 四位小数
默认情况下只能保存2位小数.如果有字段需要4位小数则: 在OnModelCreating方法中添加一行: modelBuilder.Entity<SissMerchantBillRate> ...
- 图片jpg,png转为BASE64编码
-- using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace aliy ...
- StringRedisHelper
@Slf4j @Service public class StringRedisHelper { private StringRedisTemplate redisTemplate; @Autowir ...
- ES Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed
查看日志切分:sed -n '/2022-03-21 01:50:11.785/,/2022-03-21 02:25:01.130/p' test-2022-03-21-1.log > 2203 ...
- windows系统安装或使用inspect.exe工具
确认是否安装? 结合工具everything,进行搜索 选择对应操作系统的版本,右键->选择打开路径,进到inspect.exe的安装路径,双击打开软件 软件开启后,就会自动开始抓取目前软件界面 ...