首页 > 其他分享 >ElasticSearch入门(实战)

ElasticSearch入门(实战)

时间:2024-06-20 16:57:28浏览次数:13  
标签:实战 shopping 入门 DEFAULT request client ElasticSearch query new

环境准备:VMware docker  

 创建一个linux虚拟机,使用docker pull elasticsearch 

部署单体服务: 

docker pull elasticsearch:6.8.13
#elasticsearch十分占用内存,用这种方式启动会导致Linux卡机
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.13
#所以需要限制内存(-e ES_JAVA_OPTS='-Xms64m -Xmx512m')
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS='-Xms64m -Xmx512m' elasticsearch:6.8.13
可采用其他文章的创建ealsticsearch

测试是否创建成功: 浏览器访问部署机ip地址:9300 跳转 

tagline" : "You Know, for Search"显示成功

PostMan客户端工具

索引操作:

        创建索引:PUT  http://127.0.0.1:9200/shopping 具有幂等性,二次请求会产生错误

                          不允许用Post,不具有幂等性 

        查询&删除  GET    http://127.0.0.1:9200/shopping

                            DELETE    http://127.0.0.1:9200/shopping

文档操作:

        添加文档: POST    http://127.0.0.1:9200/shopping/_doc/1001  在请求体输入JSON格式的数据(必须传递数据不然会报错 request body is required)

        elasticsearch7以后 _type默认是_doc,/_doc后面没有自己添加的id会自动添加id,Post是全量修改

       查询文档 GET    http://127.0.0.1:9200/shopping/_doc/1001

                                   http://127.0.0.1:9200/_search  

        条件查询   GET  http://127.0.0.1:9200/shopping/_serach?q=数据:值 

                        or 请求体上查询

 

        分页查询  

                在请求体上加上 form 和 size 给相应的值 还有sort排序 _source 哪个字段

        多条件查询: 

       修改文档  POST OR PUT  全量修改 直接覆盖     http://127.0.0.1:9200/shopping/_doc/1001    Body内容修改

                       局部修改:    POST     http://127.0.0.1:9200/shopping/_update/1001 {"doc":{}}

JavaAPI 操作 ES

   环境准备 引入Maven依赖 版本7以前type需要自己制定,7以后默认为_doc

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.5.4</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>6.5.4</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>6.5.4</version>
</dependency>
创建ES 客户端 
        client = RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                HttpHost.create("http://localhost:9200")
        )
);

索引操作:   

    创建索引: client.indices()
                        .create(new CreateIndexRequest().index("shopping"),RequestOptions.DEFAULT);

    查询or删除索引:
           查询:client.indices()
                .get(new GetIndexRequest().indices("shopping"),RequestOptions.DEFAULT);
           删除:client.indices()
        .delete(new DeleteIndexRequest().indices("shopping"),RequestOptions.DEFAULT); 

文档操作: 

     不需要写mapping映射属性 

       添加文档: 

        ObjectMapper objectMapper = new ObjectMapper();
        client.index(newIndexRequest("shopping").id("1002").type("_doc").source(objectMapper.writeValueAsString(//java对象),XContentType.JSON),RequestOptions.DEFAULT);      

        局部修改文档:

        UpdateRequest request = new UpdateRequest(); request.index("shopping"); request.id("2001"); request.doc(XContentType.JSON,objectMapper.writeValueAsString(//java对象) client.update(new UpdateRequest(),RequestOptions.DEFAULT);

        查询or删除文档:

        查询:

        GetRequest request = new GetRequest();
        request.index("shopping");
        request.id("2001");
        client.get(request,RequestOptions.DEFAULT);

        删除:

        DeleteRequest request = new DeleteRequest();
        request.index("shopping");
        request.id("2001");
        client.delete(request,RequestOptions.DEFAULT);

        批量删除 or 增加: 

        

        BulkRequest request = new BulkRequest();
        bulk.add();//有增加、删除的request
        client.bulk(request,RequestOptions.DEFAULT);
  查询:

        全量查询:               

SearchRequest request = new SearchRequest();
request.indices("shopping");
request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
client.search(request,RequestOptions.DEFAULT);
  条件查询:          
SearchRequest request = new SearchRequest();
request.indices("shopping");
request.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",12)));
client.search(request,RequestOptions.DEFAULT);

        分页查询:        

SearchRequest request = new SearchRequest();
request.indices("shopping");
SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
query.from();
query.sort();
query.size();
request.source(query);
client.search(request,RequestOptions.DEFAULT);

        字段查询:        

SearchRequest request = new SearchRequest();
request.indices("shopping");
SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
String[] excludes = {};
String[] includes = {};
query.fetchSource(includes,excludes);
request.source(query);
client.search(request,RequestOptions.DEFAULT);

        组合查询:

SearchRequest request = new SearchRequest();
request.indices("shopping");
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must();
boolQueryBuilder.should();
boolQueryBuilder.mustNot();
builder.query(boolQueryBuilder);
request.source(builder);
client.search(request,RequestOptions.DEFAULT);

        范围查询: 

SearchRequest request = new SearchRequest();
request.indices("shopping");
SearchSourceBuilder builder = new SearchSourceBuilder();
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("age");
rangeQueryBuilder.gte(30);
rangeQueryBuilder.lte(40);
builder.query(rangeQueryBuilder;
request.source(builder);
client.search(request,RequestOptions.DEFAULT);

       模糊查询:        

SearchRequest request = new SearchRequest();
request.indices("shopping");
SearchSourceBuilder builder = new SearchSourceBuilder() ;
FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery("name","wangwu").fuzziness(Fuzziness.ONE);
builder.query(fuzzyQueryBuilder;
request.source(builder);
client.search(request,RequestOptions.DEFAULT);

 

                           

                             

        

                                          

        

标签:实战,shopping,入门,DEFAULT,request,client,ElasticSearch,query,new
From: https://blog.csdn.net/m0_73834500/article/details/139826817

相关文章

  • Swagger的基本使用(快速入门)
    目录一、环境配置(1)导入依赖:(一般导入依赖都会报错,所以大家也可以借鉴一下这篇文章:swagger配置报错)(2)启动类添加注解二、Swagger配置介绍(1)基本配置 (2)设置扫描的包三、Swagger常用注解(1)@Api(2)@ApiOperation(3)@ApiParam(4)@ApiModel(5)@ApiIgnore(6)@ApiImplicitParam在使......
  • Python 基础详解:入门宝典(3)
    容器类型介绍:1.列表(List)列表是Python中最常用的数据结构之一,它是一个有序的可变序列,允许存储任意类型的元素。列表用方括号[]表示。特点有序:元素按照插入顺序排列。可变:可以修改元素的值或增加、删除元素。支持重复:可以包含重复的元素。#创建一个列表fruits=['a......
  • 黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3
    你好,我是Qiuner.为帮助别人少走弯路和记录自己编程学习过程而写博客这是我的githubhttps://github.com/Qiuner⭐️giteehttps://gitee.com/Qiuner......
  • HALCON-从入门到入门-相机标定-内参外参
    1.废话为什么要进行相机标定几个坐标系像素坐标系(图片坐标系)就是我们在电脑上看到图片的坐标系,以左上角为原点(2d坐标系)单位是像素pixel相机坐标系相机物方视野投影的坐标系,单位是mm世界坐标系就是真实的世界坐标系,单位是mm标定的结果标定的结果中有内参矩阵,外参,畸......
  • RabbitMQ实战宝典:从新手到专家的全面探索
    前言在当今分布式系统架构中,消息队列已成为不可或缺的一部分,而RabbitMQ作为其中的佼佼者,凭借其强大的功能和灵活性,广泛应用于各种规模的应用场景中。本文将带你从基础概念出发,深入探讨RabbitMQ的核心特性,通过实战案例与Java代码示例,引领你踏上成为RabbitMQ大师的旅程。第......
  • 软件测试入门基础03-MySQL
    前言:这是我个人的学习记录,我是科班在读有一定基础,很多东西不会特别详细,欢迎大佬指点,也很高兴有人看了能得到帮助这一小节的内容是MySQL,我已经修完数据库,但时间久远忘记许多于是又看了一遍做个笔记。印象中数据库挺简单,简单的说就是增删改查。我修这门课时把实验做完基本上知......
  • 【靶场实战】vulntarget-b漏洞靶场实战
    免责申明本公众号的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文......
  • 实战案例 欢迎页面业务
    一、实验目的1. 欢迎页面UI开发;2. 业务逻辑开发;二、应用介绍本阶段项目实现了一个美食页面进入页面,运行界面如图所示。三、代码结构解读 importcommonfrom'@ohos.app.ability.common'importrouterfrom'@ohos.router'importPreferenceUtilfrom'../commo......
  • langchain入门
    LangChain为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程,轻松地构建如下所示的RAG应用 理解langchain的运作机制LangChain是一个为构建大型语言模型(LLMs)驱动的应用程序而设计的框架。它的核心目标是简化从开发到生产的整个应用程序生命周期。模块化构......
  • 上海交通大学出品《动手学大模型》LLM 实战课,课件+实战教程(教程分享)
    来了来了!上海交通大学的大模型超超超级牛掰的大模型编程实战课公开了,课件+教程,本套实战教程旨在提供大模型相关的入门编程参考。通过简单实践,帮助同学快速入门大模型,更好地开展课程设计或学术研究。上海交大大模型实验室整了一份针对入门阶段的大模型教程,已经看完了非常不......