当前位置: 首页 > wzjs >正文

娄底市网站建设网站html地图导航代码

娄底市网站建设,网站html地图导航代码,作业做哪些类型的网站,网页源代码下载在当今数据驱动的企业环境中,利用Java API与Elasticsearch DSL构建的智能搜索应用扮演着至关重要的角色。它不仅能够高效处理和分析海量数据,还能提供精准、即时的搜索结果,极大地提升了信息检索的效率和准确性。通过灵活运用DSL查询&#xf…

在当今数据驱动的企业环境中,利用Java API与Elasticsearch DSL构建的智能搜索应用扮演着至关重要的角色。它不仅能够高效处理和分析海量数据,还能提供精准、即时的搜索结果,极大地提升了信息检索的效率和准确性。通过灵活运用DSL查询,企业可以实现复杂的搜索需求,支持决策制定。

目录

查询步骤

RestClient查询

准备基础代码

代码示例与解读

叶子查询

全文检索查询

match查询

multi_match查询

精确查询

range查询

term查询

复杂查询

bool查询

排序和分页


查询步骤

之前说过,由于Elasticsearch对外暴露的接口都是Restful风格的接口,因此JavaAPI调用就是在发送Http请求

查询的基本步骤如下:

  1. 创建request对象,这次是搜索,所以是SearchRequest
  2. 准备请求参数,也就是查询DSL对应的JSON参数
  3. 发起请求
  4. 解析响应,响应结果相对复杂,需要逐层解析

事实上,我们必须明白使用Java API 实现DSL的过程是:根据DSL语句拼接条件。

RestClient查询

新建一个ElasticSearchTest测试类

准备基础代码

 private RestHighLevelClient client;/*** 创建ES客户端*/@BeforeEachvoid setUp() {client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://你自己的虚拟机地址:9200")));}/*** 关闭ES客户端* @throws IOException*/@AfterEachvoid tearDown() throws IOException {if (client != null) {client.close();}}/*** 测试连接*/@Testvoid testConnection() {System.out.println("client = " + client);}

代码示例与解读

    /*** 测试查询所有* @throws IOException*/@Testvoid testMatchAll() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数request.source().query(QueryBuilders.matchAllQuery());// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

解读:

  1. 第一步,创建SearchRequest对象,指定索引库名
  2. 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮
  3. 第三步,利用client.search()发送请求,得到响应
  4. 第四步,解析请求

这里关键的API有两个,一个是request.source(),它构建的就是DSL中的完整JSON参数。

另一个是QueryBuilders,其中包含了我们学习过的各种叶子查询复合查询等。

现在通过解析请求的方法:

    /*** 处理响应* @param response*/private void handleResponse(SearchResponse response) {SearchHits searchHits = response.getHits();// 1.获取总条数long total = searchHits.getTotalHits().value;System.out.println("共搜索到" + total + "条数据");// 2.遍历结果数组SearchHit[] hits = searchHits.getHits();for (SearchHit hit : hits) {// 3.得到_source,也就是原始json文档String source = hit.getSourceAsString();// 4.反序列化并打印ItemDoc item = JSONUtil.toBean(source, ItemDoc.class);System.out.println(item);}}

叶子查询

全文检索查询

match查询

    /*** 测试查询所有* @throws IOException*/@Testvoid testMatchAll() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数request.source().query(QueryBuilders.matchAllQuery());// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

实现效果如下:

multi_match查询

    /*** 测试多字段查询* @throws IOException*/@Testvoid testMultiMatch() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数request.source().query(QueryBuilders.multiMatchQuery("Apple", "name", "category"));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

实现效果如下:(即必须name和category中都带有“Apple”)

精确查询

range查询

    /*** 测试范围查询* @throws IOException*/@Testvoid testRange() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数request.source().query(QueryBuilders.rangeQuery("price").gte(100000).lte(300000));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);

实现效果如下:

term查询

    /*** 测试精确查询* @throws IOException*/@Testvoid testTerm() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数request.source().query(QueryBuilders.termQuery("brand", "Huawei"));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

实现效果如下:

复杂查询

bool查询

    /*** 测试复杂条件查询* @throws IOException*/@Testvoid testSearch() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数request.source().query(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", "手机")).filter(QueryBuilders.termQuery("brand", "Huawei")).filter(QueryBuilders.rangeQuery("price").lt(1000000)));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

实现效果如下:

排序和分页

    /*** 分页和排序* @throws IOException*/@Testvoid testPageAndSort() throws IOException {int pageNo = 1, pageSize = 5;// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数// 2.1.搜索条件参数request.source().query(QueryBuilders.matchQuery("name", "电脑"));// 2.2.排序参数request.source().sort("sold", SortOrder.DESC).sort("price", SortOrder.ASC);// 2.3.分页参数request.source().from((pageNo - 1) * pageSize).size(pageSize);// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

实现效果如下:(name中包含“电脑”,现役sold降序排序,sold相同,以price升序排序,展示第一页,展示五条)

高亮

    /*** 高亮* @throws IOException*/@Testvoid testHighlight() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.组织请求参数// 2.1.query条件request.source().query(QueryBuilders.matchQuery("name", "手机"));// 2.2.高亮条件request.source().highlighter(SearchSourceBuilder.highlight().field("name").preTags("<em>").postTags("</em>"));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleHighResponse(response);}/*** 处理高亮响应* @param response*/private void handleHighResponse(SearchResponse response) {SearchHits searchHits = response.getHits();// 1.获取总条数long total = searchHits.getTotalHits().value;System.out.println("共搜索到" + total + "条数据");// 2.遍历结果数组SearchHit[] hits = searchHits.getHits();for (SearchHit hit : hits) {// 3.得到_source,也就是原始json文档String source = hit.getSourceAsString();// 4.反序列化ItemDoc item = JSONUtil.toBean(source, ItemDoc.class);// 5.获取高亮结果Map<String, HighlightField> hfs = hit.getHighlightFields();if (CollUtil.isNotEmpty(hfs)) {// 5.1.有高亮结果,获取name的高亮结果HighlightField hf = hfs.get("name");if (hf != null) {// 5.2.获取第一个高亮结果片段,就是商品名称的高亮值String hfName = hf.getFragments()[0].string();item.setName(hfName);}}System.out.println(item);}}

实现效果如下:

http://www.dtcms.com/wzjs/590681.html

相关文章:

  • html5 移动网站网站建设方案书要怎么样写
  • 网站导航栏兼容性网站广告推广技巧分享
  • 个人邮箱登录注册长沙网站seo收费标准
  • 高校校园网站建设的要求关于建筑建设的网站
  • 做笔记的网站网站的效果图
  • 创网站软件建站报告2000字
  • 网站专业术语中seo意思是site 危险网站
  • 做网站的企业排名科技公司排名
  • 天猫网站设计教程太原建站模板厂家
  • 长春网站怎么推广树莓派做网站
  • 厦门同安区建设局网站品牌营销推广策划公司
  • 做网站42类商标怎么选小类乐居房产官方网站
  • 用什么软件做网站最好和田网站建设
  • 做推广网站有什么WordPress知更鸟lts
  • 西宁最好网站建设公司哪家好wordpress 问答模块
  • 河南科兴建设有限公司网站做企业网站需要购什么
  • 修改网站搜索缩略图新品牌营销策划方案
  • 阳江招聘网站南宁网站建设网络公司
  • 网站文件夹命名seo用vs2008做网站教程
  • 学校网站做网页飘窗怎么做谷歌搜索关键字网站
  • 上海网站推广策划买一个成品网站多少钱
  • 网站大数据怎么做常州网站建设公司排名
  • 个人网站模板 php暂时关闭wordpress插件
  • 企业如何申请网站wordpress3.5.1漏洞
  • 网页设计设计网站建设正规网店加盟代理
  • 做网站 php python平面网页设计是做什么的
  • 杭州网站建设公司有哪些wordpress错误
  • 网站icp备案申请wordpress博客怎么设置主题
  • 建设有限公司网站检查网站的跳转路径是否清晰 哪里要优化
  • 免费红色ppt模板网站广州品牌策划有限公司