在java应用中使用es简单介绍-1
索引模板设置
ES提供索引新文档时自动自动新增索引的能力,但是由于其动态映射的结果可能不符合预期, 因此采用设置映射模板,通过索引名匹配进行映射设置。
- 分片设置
- 主分片:默认为5,直接采用
- 副分片:提供故障转移能力、读能力,设置成1,过大回到只写效率较低
- 编写模板
- template:用于匹配index
- settings:由于设置索引的分片等信息
- mapping:用于设置映射,关于类型type,由于es6默认写_doc即可。之后不再推荐多type设置,由于es中每个索引内部相同名称字段其类型是一样的,因此如果有多个type,对于使用者来说,往往容易将不同type中的相同字段设置成不同的问题。
- doc_values:代表是否用于聚合,会生成doc_values数据,用于聚合。es的倒排索引用于指导关键词匹配到文档,而doc_value相当于反向的倒排索引,用于高效的将文档按照设定字段进行聚合。
- 索引模板设置
PUT _template/template1
{"template": "repeater_replay_*","settings": {"index.number_of_shards": 5,"number_of_replicas": 1},"mappings": {"_doc": {"properties": {"record_id": { "type": "keyword" },"task_id": { "type": "keyword" },"task_run_id": {"type": "keyword", "doc_values": true},"app_id": {"type": "keyword"},"app_name": {"type": "keyword"},"environment": {"type": "keyword"},"host": {"type": "keyword"},"trace_id": {"type": "keyword"},"status": {"type": "byte"},"cost": {"type": "long"},"diff_result": {"type": "text", "index": false},"response": {"type": "text", "index": false},"mock_invocation": {"type": "text", "index": false}}}}
}
客户端
选择
根据官网建议使用Rest High Level的client。为了防止被springboot父工程的项目覆盖,故采用重复依赖来解决。在选择client版本时需要注意,Rest High Level的版本需要和es服务器版本对应,至少大版本是要对应的。
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>6.3.2</version>
</dependency>
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>6.3.2</version>
</dependency>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>6.3.2</version>
</dependency>
使用
- 初始化
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(httpHosts));
- 索引(新增数据)
IndexRequest request = new IndexRequest(realIndex, type).source(docSource, XContentType.JSON).timeout("1s").opType("index");
client.index(request);
- 搜索
SearchRequest searchRequest = new SearchRequest("index-*").preference("_local");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder().query(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("price", 20)));
searchRequest.source(sourceBuilder);
client.search(searchRequest);
这种属于精确查询,请求体如下:
{"query" : {"constant_score" : { "filter" : {"term" : { "price" : 20}}}}
}
- 其他
还有聚合、删除等操作,都是比较类似的,详细参考接口文档
总结
已经学会设置索引模板设置,客户端也学会了如何编写,在后续使用过程中,如果有别的新的,再继续总结。
在java应用中使用es简单介绍-1相关推荐
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- java编译时注解_简单介绍 Java 中的编译时注解
1. 前言 上一篇 主要介绍了什么是 注解 (Annotation) 以及如何读取 运行时注解 中的数据, 同时用注解实现了简单的 ORM 功能. 这次介绍另一部分: 如何读取 编译时注解 ( Ret ...
- Java中的GC简单介绍
文章目录 一.GC是什么? 二.为什么要GC? 三.怎么GC? 一.GC是什么? GC英文全称为Garbage Collection,即垃圾回收. Java中的GC就是对内存的GC. Java的内存管 ...
- java中的List简单介绍
List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vector之间的关系和区别. List 是一个接口, ...
- java标识符_Java标识符的简单介绍
各位小伙伴大家好,这次小编要介绍一下Java的标识符,那么,问题来了,什么是标识符呢?下面,小编来给大家解答吧,java标识符就是在java程序中给变量,类,方法等命名的符号.(关于类和方法一时半会说 ...
- WCF中绑定的简单介绍
绑定基本概念 绑定就是一个从通用基础类型派生出来的运行时类型.绑定中描述了传输协议,消息编码格式和其他的一些用于通信的通信协议. 绑定的种类介绍 类型名 配置文件使用名 描述 BasicHttpBin ...
- java 应用分模块_在Java 11中创建一个简单的模块化应用教程
模块化编程使人们能够将代码组织成独立的,有凝聚力的模块,这些模块可以组合在一起以实现所需的功能. 本文摘自Nick Samoylov和Mohamed Sanaulla撰写的一本名为Java 11 Co ...
- chrome浏览器中F12的简单介绍
Chrome开发者工具中主要使用的四个功能页面: 元素(Elements).控制台(Console).源代码(Sources).网络(Network) 1.元素(Elements) 用于查看或修改HT ...
- Java中UUID的简单介绍
一.什么是UUID? UUID全称:Universally Unique Identifier,即通用唯一识别码. UUID是由一组32位数的16进制数字所构成,UUID的标准型式包含32个16进制数 ...
最新文章
- net通过oledb 和ibm自带连接方式,连接db2数据库出错
- 清华大学第四届大数据开放日(Big Data Day)
- sharepoint 2007 网站操作 显示菜单不全
- 1.MVC的工作流程
- 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task4模型建立
- 我的docker随笔4:docker常用命令
- 森林怎么训练野人_138年前抓的“野人女孩”,最终命运如何?死前心愿让人心酸...
- 你真的会发朋友圈吗?
- Gulp学习笔记(黑马教程)
- rc.local文件开机不执行
- 第十一章 Mock.js 数据生成器
- bootbox.js官方文档中文版
- gif透明背景动画_如何利用premiere制作GIF动态图片
- android 判断 飞行模式,Android 判断飞行模式的状态
- 搜索引擎类网站调查报告
- Hadoop-HDFS总结(五)
- uniapp上下滑屏切换支持视频和图片轮播实现,类似抖音效果
- 评《中国赛映射出巨大市场潜力 姚明希望CBA赶超NBA》
- MySQL学生表、老师表、课程表和成绩表查询语句,全部亲测
- Prism 模板包,快捷创建Prism程序