IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot整合ES 综合案例--京东搜索 -> 正文阅读

[Java知识库]springboot整合ES 综合案例--京东搜索

目录

1.springboot整合ES

2.进行相关对ES操作

3. 综合案例--京东搜索


1.springboot整合ES

1.1创建一个Springboot工程并加入相关的依赖

<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

1.2 创建一个配置,获取ES工具类对象

@Configuration
public class ESConfig {

    //该对象可以对我们的ES进行相关的操作
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost("127.0.0.1",9200,"http")));
        return client;
    }
}

2.进行相关对ES操作

2.1 操作索引---创建索引

  //创建索引
    @Test
    void contextLoads() throws Exception{
        //该类把创建索引的信息都封装到该类中
        CreateIndexRequest createIndexRequest=new CreateIndexRequest("qy151-index");
        CreateIndexResponse createIndexResponse=client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse.isShardsAcknowledged());
    }

2.2操作索引--删除索引

 @Test
    //删除索引
    public void testDeleteIndex()throws Exception{
        DeleteIndexRequest deleteIndexRequest=new DeleteIndexRequest("qy151-index");
        AcknowledgedResponse delete=client.indices().delete(deleteIndexRequest,RequestOptions.DEFAULT);
        System.out.println(delete.isAcknowledged());
    }

2.3 索引操作--判断索引是否存在

 @Test
    //判断索引是否存在
    public void testIndexExists()throws Exception{
        GetIndexRequest getIndexRequest=new GetIndexRequest("qy151-index");
        boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

2.4 操作文档---添加文档

 //添加文档
    public void testInsertDoc() throws Exception{
        IndexRequest indexRequest=new IndexRequest("qy151-index");
        indexRequest.id("1");//指定文档的id
        //指定文档的内容:String文档的json内容,XContentType xContentType:以什么格式
        indexRequest.source(JSON.toJSONString(new User("张三","北京",22)), XContentType.JSON);
        IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println(index.getResult());
    }

2.5 查询文档--id

//查询文档--id
    @Test
    public void testGetDoc() throws Exception{
        GetRequest getRequest=new GetRequest("qy151-index");
        getRequest.id("1");
        GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
        String string = getResponse.getSourceAsString();
        User user=JSON.parseObject(string,User.class);
        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
        System.out.println(sourceAsMap.get("name"));
    }

2.6 判断索引文档是否存在

//判断索引文档是否存在
    @Test
    public void testDocExist() throws Exception{
        GetRequest indexRequest=new GetRequest("qy151-index");
        indexRequest.id("2");
        boolean exists = client.exists(indexRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

2.7 删除文档

  @Test
    //删除文档
    public void testDeleteDoc()throws Exception{
        DeleteRequest deleteRequest= new DeleteRequest("qy151-index");
        deleteRequest.id("1");
        DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println(delete.getResult());

    }

2.8 修改文档

@Test
    //修改文档
    public void testUpdateDoc() throws Exception{
        UpdateRequest updateRequest=new UpdateRequest("qy151-index","1");
        User user=new User();
        user.setName("黎明");
        updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
        UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println(update);
    }

2.9 批量添加文档

@Test
    //批量添加
    public void TestBuck()throws Exception{
        BulkRequest bulk=new BulkRequest("qy151-index");
        List<User> list=new ArrayList<>();
        list.add(new User("2","张三","北京",22));
        list.add(new User("3","李四","上海",22));
        list.add(new User("4","王五","杭州",22));
        list.add(new User("5","赵六","广州",22));
        list.add(new User("6","孙琪","南京",22));
        //list.stream().forEach(item->bulk.add(new IndexRequest().id(item.getId()).source(JSON.toJSONString(item),XContentType.JSON)));
        for(User user:list){
            IndexRequest indexRequest=new IndexRequest();
            indexRequest.id(user.getId());
            indexRequest.source(JSON.toJSONString(user),XContentType.JSON);
            bulk.add(indexRequest);
        }
        BulkResponse bulkResponse = client.bulk(bulk,RequestOptions.DEFAULT);
        System.out.println(bulkResponse.hasFailures());
    }

2.10 复杂查询

@Test
    //复杂查询
    public void testSearch() throws Exception{
        SearchRequest searchRequest=new SearchRequest("qy151-index");
        //创建条件对象
        SearchSourceBuilder sourceBuilder=new SearchSourceBuilder();
        //查询条件 使用TermQueryBuilder工具类创建
        TermQueryBuilder matchQuery = QueryBuilders.termQuery("name", "张");
        sourceBuilder.query(matchQuery);
        //分页
        sourceBuilder.from(0);
        sourceBuilder.size(1);
        //排序
//        sourceBuilder.sort("age");

        //高亮
        HighlightBuilder highlightBuilder=new HighlightBuilder();
        highlightBuilder.field("name");
        highlightBuilder.preTags("<font color='red'>");
        highlightBuilder.postTags("</font>");
        sourceBuilder.highlighter(highlightBuilder);

        searchRequest.source(sourceBuilder);


        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

        System.out.println("总条数:"+searchResponse.getHits().getTotalHits().value);
        SearchHit[] hits = searchResponse.getHits().getHits();

        Arrays.stream(hits).forEach(item-> System.out.println(item.getSourceAsString()));
        Arrays.stream(hits).forEach(item-> System.out.println(item.getHighlightFields()));

    }

3. 综合案例--京东搜索

package com.wjk.utils;

import com.wjk.entity.Product;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class HtmlParseUtil {

        public static void main(String[] args)throws Exception {
        String path="https://search.jd.com/Search?keyword=java";
        //Document整个网页
        Document document = Jsoup.parse(new URL(path), 30000);
//        System.out.println(document);
        Element j_goodsList = document.getElementById("J_goodsList");
        //System.out.println(j_goodsList);
        Elements li = j_goodsList.getElementsByTag("li");
//        List<Product> list=new ArrayList<>();
        for (Element element:li){
            //拿到所有价格
            String text = element.getElementsByClass("p-price").eq(0).text();
            String pname = element.getElementsByClass("p-name").eq(0).text();
            String img = element.getElementsByTag("img").eq(0).attr("data-lazy-img");

            System.out.println(img);

        }

    }
}

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:50:24  更:2022-08-19 18:51:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:16:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码