首页 > 其他分享 >ES相关的增删改查操作示例

ES相关的增删改查操作示例

时间:2023-09-16 20:11:57浏览次数:46  
标签:HOTEL hotelDoc source 示例 改查 索引 new EsConstant ES

依赖:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>

  修改版本:

 

第一步:条件准备:首先是配置类:

@Configuration
public class EsConfig {

    @Bean
    public RestHighLevelClient client() {
        return new RestHighLevelClient(RestClient.builder(HttpHost.create(EsConstant.ES_URL)));
    }
}

 第二步:将我们需要创建的索引,以及文档,和字段

比如:

public interface EsConstant {
     //服务地址
    String ES_URL = "http://192.168.138.100:9200";
    //索引名称
    String HOTEL_INDEX = "hotel";
    //mapping映射
    String  HOTEL_MAPPING = "{\n" +
            "  \"mappings\": {\n" +
            "    \"properties\": {\n" +
            "      \"id\":{\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"name\":{\n" +
            "        \"type\":\"text\",\n" +
            "        \"analyzer\": \"ik_smart\",\n" +
            "        \"copy_to\": \"all\"\n" +
            "      },\n" +
            "      \"address\":{\n" +
            "        \"type\": \"text\",\n" +
            "        \"analyzer\": \"ik_smart\",\n" +
            "        \"copy_to\": \"all\"\n" +
            "      },\n" +
            "    }\n" +
            "  }\n" +
            "}";
} 

 1.创建索引:(类似mysql创建数据表一样)

    void contextLoads() throws IOException {

        //执行创建索引对象,指定索引名
        CreateIndexRequest createindexrequest = new CreateIndexRequest(EsConstant.HOTEL_INDEX);

        //指定映射
        createindexrequest.source(EsConstant.HOTEL_MAPPING, XContentType.JSON);

        //创建索引
        CreateIndexResponse response = client.indices().create(createindexrequest, RequestOptions.DEFAULT);
        
    }

  2.根据文档id查询文档内容:(类似mysql查询单个数据结果一样)

    public void getDocTest() throws IOException {
        //查询索引中的文档信息
        GetRequest getRequest = new GetRequest(EsConstant.HOTEL_INDEX, "36934");

        GetResponse response = client.get(getRequest, RequestOptions.DEFAULT);

        //将返回结果转成json字符串
        String source = response.getSourceAsString();
        //将json字符串转成查询对象
        HotelDoc hotelDoc = JSONObject.parseObject(source, HotelDoc.class);
    }

  3.批量添加数据库中的内容到es索引

public void BanceAddTest() throws IOException {
        //从数据库获取数据集合
        List<Hotel> hotelList = hotelService.list();
        ArrayList<HotelDoc> list = new ArrayList<>();
        for (Hotel hotel : hotelList) {
            HotelDoc hotelDoc = new HotelDoc(hotel);
            list.add(hotelDoc);
        }

        BulkRequest bulkrequest = new BulkRequest();
        for (HotelDoc hotelDoc : list) {
            //创建请求对象并添加数据
            IndexRequest source = new IndexRequest(EsConstant.HOTEL_INDEX)
                    //获取文档id并转成字符串
                    .id(hotelDoc.getId().toString())
                    //将对象转成json字符串
                    .source(JSONObject.toJSONString(hotelDoc), XContentType.JSON);
            //添加文档对象
            bulkrequest.add(source);
        }
        //增加文档到索引中
        BulkResponse bulk = client.bulk(bulkrequest, RequestOptions.DEFAULT);
    }

  以上就是关于索引常用的api示例.

 

标签:HOTEL,hotelDoc,source,示例,改查,索引,new,EsConstant,ES
From: https://www.cnblogs.com/liyongliangs/p/17707237.html

相关文章

  • [Servlet/Tomcat] HttpServletRequest#getHeader(headerNameWithIgnoreCase)(获取heade
    1故事背景最近项目上有个业务需求,翻译成技术需求,即:将request.headers中的几个header入参转换成request.body(pageRequest)中的内置参数。为便于灵活配置,header参数名称是动态可配置的(存放于nacos配置中心),比如:sysCode、Accept-Language技术实现,主要就springmvc的org.spr......
  • BeanUtils.copyProperties用法
    //获取ActionForm表单数据UserActionFormuForm=(UserActionForm)form;//构造一个User对象Useruser=newUser();//赋值(部分==》整体)BeanUtils.copyProperties(uForm,user);注意点  1、UserActionForm==》User:部分到整体;  2、如果User和UserActionFor......
  • CUDA memories
    GlobalThere'salargeamountofglobalmemory.It'sslowertoaccessthanothermemorylikesharedandregisters.AllrunningthreadscanreadandwriteglobalmemoryandsocantheCPU.ThefunctionscudaMalloc,cudaFree,cudaMemcpy,cud......
  • XMind2TestCase安装问题
     安装完成了XMind2TestCase之后,在命令端检查安装是否成功,报错:C:\Users\Administrator>xmind2testcaseTraceback(mostrecentcalllast): File"C:\Softwares\Python\Scripts\xmind2testcase-script.py",line33,in<module> sys.exit(load_entry_point('......
  • JAX-WS开发webservice示例详解
    目录:概述实验环境服务端的实现客户端的实现[一]、概述JavaAPIforXMLWebServices(JAX-WS)是Java程序设计语言一个用来创建Web服务的API。在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(serviceendpointinterface),并提供相关的实现,通过调用JAX-WS的服务发......
  • [论文速览] SDXL@ Improving Latent Diffusion Models for High-Resolution Image Syn
    Pretitle:SDXL:ImprovingLatentDiffusionModelsforHigh-ResolutionImageSynthesisaccepted:arXiv2023paper:https://arxiv.org/abs/2307.01952code:https://github.com/Stability-AI/generative-models关键词:imagesynthesis,stablediffusion,SDXL,AICG......
  • 索引管理--ES客户端(测试创建索引库以及文档的增删改查)
    这里使用RestClient来搭建ES客户端RestClient有两种:JavaLowLevelRESTClient和JavaHighLevelRESTClient这里采用JavaHighLevelRESTClient首先添加依赖:<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsear......
  • 2020-2021 ACM-ICPC Brazil Subregional Programming Contest
    A.StickerAlbum你想要得到\(n\)张贴纸,每包礼物中等概率出现\([A,B]\)范围内数量的贴纸,求需要买多少包礼物才能至少获得\(n\)张贴纸的期望次数\(1\leqn\leq10^6,0\leqA,B\leq10^6\)题解:期望DP我们考虑从后往前进行\(dp\)设计状态为\(dp[i]\)代表手上有\(i\)张......
  • 【ERROR: Could not find a version that satisfies】【ERROR: No matching distribut
    pip包安装出错真是把我烦死了,在yt上学东西,结果一直出这样的错,之前我都是把包下载到本地安装的,这也不是长久之计。然后我试了使用-i,使用--trusted-host,使用--user,使用--upgradepip...全都不管用。后来我想,究竟是什么时候出现这个问题的,好像很久之前就有了...老提示不安全的连......
  • 关于prepareStatement.excuteUpdate();方法返回值=1,但是表中数据不发生改变的问题(hbas
    问题描述我在执行增删改查时,查询完美,但是另外三个就比较让人无语了,这里的m值=1(为后台控制台输出看到),界面也能够正常跳转,但是数据不发生任何改变;问题解决经过查阅资料发现,原来在hbase数据库里面,我们还需要在对数据表进行改变的同时,还需要加上这么一条语句,放在:intm=psmt.exec......