【ES】一、ES入门及JavaAPI使用

这篇具有很好参考价值的文章主要介绍了【ES】一、ES入门及JavaAPI使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES的倒排索引和ES与Mysql的使用对比

什么是ES:

  • ES全称是ElasticSearch,是一个开源的搜索引擎,可以帮助我们快速从海量数据里搜索到需要的数据;

为什么要有ES:MySql或其它传统的RDBMS有一些问题

  • 模糊查询时,如果查询条件是以%开头,那么查询的性能会急剧下降
  • 文本检索结果不精确。比如要搜索%华为手机%,搜索不到华为Mate50HUAWEI Mate50华为 手机

正向索引:如果要检索一条数据,需要全表扫描。数据量越大,性能下降就越严重

  • 先获取第一条,判断是否匹配搜索条件;如果不匹配,就抛弃;如果匹配,就留下
  • 再获取第二条,判断是否匹配搜索条件;如果不匹配,就抛弃;如果匹配,就留下
  • ……
  • 获取最后一条,判断是否匹配搜索条件;如果不匹配,就抛弃;如果匹配,就留下

倒排索引:

  • 给某个字段值构建倒排索引:

    对这个字段的所有值,都进行分词。构建一下 拆分的词条与文档id的对应关系,这个对应关系是倒排索引

  • 要检索一个数据:

    要对检索的关键词进行分词

    拿拆分的词条,去倒排索引里直接找到关联的文档有哪些

    不需要全表扫描了

ES和MySQL的对比:

  • 相同点:它们都能够存储数据,都能够进行增删改查操作
  • 不同点:
    • MySQL擅长事务型 的操作(增删改),可以保证数据的安全性和一致性
    • ES擅长是数据查询搜索统计分析操作(查),查询的性能极强
  • 实际使用模式:
    • 要增删改数据,操作MySQL
    • 要查询数据,从es里查询
    • 后台从MySQL里,把数据同步到es里

操作ES索引库的命令

#1. 创建索引库(相当于MySql的建表)
#字段名:我们自定义
#每个字段要设置:
#type:字段的类型。int,short,long,double, text, keyword,…
#字段串1:text,要使用分词器进行分词的。 必须要设置用哪种分词器
#字符串2:keyword,不分词的字符串,比如:行政区域划分 省、市、县,url地址
#index:boolean类型,这个字段是否参与构建索引(是否能根据这个字段搜索数据)
PUT /product
{
“mappings”: {
“properties”: {
“id”:{
“type”: “long”,
“index”: true
},
“name”:{
“type”: “text”,
“analyzer”: “ik_max_word”
},
“image”:{
“type”: “keyword”,
“index”: false
},
“price”:{
“type”: “double”
}
}
}
}
#2. 查看所有索引库
GET /_cat/indices
GET /_cat/indices?v
#3. 查看某一个索引库
GET /product
#4. 修改某一个索引库
#注意:不能修改已有字段,只允许增加新字段
PUT /product/_mapping
{
“properties”:{
“brand”:{
“type”: “keyword”
}
}
}
#5. 删除某一个索引库
DELETE /product

操作ES文档的命令

#---------操作文档(操作数据)------------
#1. 查询索引库里的所有文档数据:搜索全部
GET /product/_search
{
“query”: {
“match_all”: {}
}
}
#2. 新增一条文档数据,修改一条文档数据(这个命令是保存操作,有就覆盖,没有就新增)
PUT /product/_doc/1
{
“id”: 1,
“name”: “HUAWEI Mate50 Pro 黑色”,
“brand”: “华为”,
“price”: 3999,
“image”: “http://www.huawei.com/mall/mate50.jpb”
}
#3. 查看一条文档数据
GET /product/_doc/1
#4. 修改一条文档数据
#全量修改:直接把原数据覆盖掉
PUT /product/_doc/1
{
“brand”: “HUAWEI”
}
#增量修改:在原本数据基础上做修改变化
POST /product/_update/1
{
“doc”: {
“id”:1,
“name”: “华为Mate50 pro 磨砂黑”,
“price”: 3999,
“image”: “http://www.huawei.com/mall/mate50.jpg”,
“brand”: “华为”
}
}
#5. 删除一条文档数据
DELETE /product/_doc/1文章来源地址https://www.toymoban.com/news/detail-820888.html

Java代码操作ES的步骤

  1. 使用JavaAPI操作es的统一步骤
//1. 创建客户端对象,连接es服务
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
	new HttpHost("localhost", 9200)
));

//2. 使用client对象操作es

//3. 关闭client对象
client.close();
  1. 使用JavaAPI操作索引库
//1. 创建索引库:注意不要导错CreateIndexRequest类了,有两个同名类,导那个短的
CreateIndexRequest request = new CreateIndexRequest("索引库名称")
    .source("索引库的结构json语句", XContentType.JSON);
client.indices().create(request, RequestOptions.DEFAULT);

//2. 判断索引库是否存在
GetIndexRequest request = new GetIndexRequest("索引库名");
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);

//3. 删除索引库
DeleteIndexRequest request = new DeleteIndexRequest("索引库名");
client.indices().delete(request, RequestOptions.DEFAULT);
  1. 使用JavaAPI操作文档
//1. 保存文档(如果文档不存在是新增,如果已存在是修改)
IndexRequest request = new IndexRequest("索引库名")
    .id("文档的唯一标识字符串")
    .source("文档内容json字符串", XContentType.JSON)
client.index(request, RequestOptions.DEFAULT);

//2. 根据id获取文档
GetRequest request = new GetRequest("索引库名").id("文档的唯一标识字符串");
GetResponse response = client.get(request, RequestOptions.DEFAULT);
String docJson = response.getSourceAsString();

//3. 根据id删除文档
DeleteRequest request = new DeteteRequest("索引库名").id("文档的唯一标识字符串");
client.delete(request, RequestOptions.DEFAULT);
  1. 批量操作文档
BulkRequest request = new BulkRequest();
循环某一个列表:
    IndexRequest indexRequest = .....;
    request.add(indexRequest);

client.bulk(request, RequestOptions.DEFAULT);

到了这里,关于【ES】一、ES入门及JavaAPI使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Logstash同步mysql数据到Elasticsearch(亲自踩坑)_将mysql中的数据导入es搜索引擎利用logstash(1)

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新大数据全套学习资料》,

    2024年04月28日
    浏览(52)
  • ElasticSearch内容分享(四):ES搜索引擎

    目录 ES搜索引擎 1. DSL设置查询条件 1.1 DSL查询分类 1.2 全文检索查询 1.2.1 使用场景 1.2.2 match查询 1.2.3 mulit_match查询 1.3 精准查询 1.3.1 term查询 1.3.2 range查询 1.4 地理坐标查询 1.4.1 矩形范围查询 1.4.2 附近(圆形)查询 1.5 复合查询 1.5.0 复合查询归纳 1.5.1 相关性算分 1.5.2 算分函数查

    2024年02月05日
    浏览(51)
  • elasticsearch(ES)分布式搜索引擎03——(RestClient查询文档,ES旅游案例实战)

    文档的查询同样适用昨天学习的 RestHighLevelClient对象,基本步骤包括: 1)准备Request对象 2)准备请求参数 3)发起请求 4)解析响应 我们以match_all查询为例 3.1.1.发起查询请求 代码解读: 第一步,创建 SearchRequest 对象,指定索引库名 第二步,利用 request.source() 构建DSL,DSL中可

    2024年02月07日
    浏览(53)
  • elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近

    2024年02月08日
    浏览(51)
  • sql语句转为es查询条件(elasticsearch-sql使用)

    github源码地址: https://gitee.com/weiyxiong_admin/elasticsearch-sql/blob/master/src/test/java/org/nlpcn/es4sql/ExplainTest.java 1、添加pom.xml依赖 2、scala 将sql转为es查询json语句 3、测试 4、查询返回结果展示(即步骤三esJSON结果打印) 5、打开postman

    2024年02月13日
    浏览(55)
  • elasticsearch(ES)分布式搜索引擎01——(初识ES,索引库操作和文档操作,RestClient操作索引库和文档)

    1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 1.1.2.ELK技术栈 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域: 而elasticsearc

    2024年02月07日
    浏览(62)
  • Elasticsearch (ES) 搜索引擎: 数据类型、动态映射、多类型(子字段)

    原文链接:https://xiets.blog.csdn.net/article/details/132348634 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) ES 映射字段的 数据类型 ,官网文档参考:Field data types。 下面是 ES 常用的一些基本数据类型。 字符串 类型: keyword :类型。 text :文本类型。

    2024年03月23日
    浏览(67)
  • 搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)

    kibana可以帮助我们方便地编写DSL语句,所以还要装kibana 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: 这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。不建议大家自己pull。 课前资料提供了镜像的tar包: 大家将

    2024年02月16日
    浏览(58)
  • Elasticsearch (ES) 搜索引擎: 搜索功能:搜索分页、搜索匹配、全文搜索、搜索建议、字段排序

    原文链接:https://xiets.blog.csdn.net/article/details/132348920 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) ES 搜索 API 官网文档:Search APIs 先创建一个索引,并写入一些文档用于搜索示例: 写入一些文档示例: 官网API:The _source option 搜索结果中的文档数据封装

    2024年02月08日
    浏览(53)
  • 关于Elasticsearch(es)中使用sql返回结果只有1000条

    es中返回的结果只有1000条,这是默认的,想要返回更多的结果,需要做两步: 1、设置max_result_window的大小 PUT indexName/_settings { “max_result_window”:20000 } max_result_window表示结果的最大数量 但是你这样设置完了之后,查询依旧还是1000条 2、查询的时候加上fetch_size 这表示页面上显

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包