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

微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.2 全文检索查询

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

SpringCloud微服务架构

文章目录

      • 微服务框架
      • SpringCloud微服务架构
      • 22 DSL 查询语法
        • 22.2 全文检索查询
          • 22.2.1 全文检索查询
          • 22.2.2 总结

22 DSL 查询语法

22.2 全文检索查询

22.2.1 全文检索查询

全文检索查询,会对用户输入内容分词,常用于搜索框搜索:

在这里插入图片描述

在这里插入图片描述

【分类】

match查询:全文检索查询的一种,会对用户输入内容分词,然后去倒排索引库检索,语法:

GET /indexName/_search
{
  "query": {
    "match": {
      "FIELD": "TEXT"
    }
  }
}

试试

【老师这儿,用到了all,但是,笔者创建的时候已经把它删了…】

那能咋办,重新建一个索引库吧

package cn.itcast.hotel.constants;

/**
 * ClassName: HotelConstants
 * date: 2022/11/1 10:16
 *
 * @author DingJiaxiong
 */


public class HotelConstants {

    public static final String MAPPING_TEMPLATE = "{\n" +
            "  \"mappings\": {\n" +
            "    \"properties\": {\n" +
            "      \"id\":{\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"name\":{\n" +
            "        \"type\": \"text\",\n" +
            "        \"analyzer\": \"ik_max_word\",\n" +
            "        \"copy_to\": \"all\"\n" +
            "      },\n" +
            "      \"address\":{\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"index\": false\n" +
            "      },\n" +
            "      \"price\":{\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"score\":{\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"brand\":{\n" +
            "        \"type\":\"keyword\",\n" +
            "        \"copy_to\": \"all\"\n" +
            "      },\n" +
            "      \"city\":{\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"starName\":{\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"business\":{\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"copy_to\": \"all\"\n" +
            "      },\n" +
            "      \"location\":{\n" +
            "        \"type\": \"geo_point\"\n" +
            "      },\n" +
            "      \"pic\":{\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"index\": false\n" +
            "      },\n" +
            "      \"all\":{\n" +
            "        \"type\": \"text\",\n" +
            "        \"analyzer\": \"ik_max_word\"\n" +
            "      }\n" +
            "    }\n" +
            "  }\n" +
            "}";

}

先把已有的索引库删掉

在这里插入图片描述

重新创建索引库

在这里插入图片描述

OK,再次执行批量插入操作

在这里插入图片描述

OK,这次就有all

在这里插入图片描述

# match 查询
GET /hotel/_search
{
  "query": {
    "match": {
      "all": "外滩"
    }
  }
}

直接运行

在这里插入图片描述

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : 6.0247297,
    "hits" : [
      {
        "_index" : "hotel",
        "_type" : "_doc",
        "_id" : "60487",
        "_score" : 6.0247297,
        "_source" : {
          "address" : "黄浦路199号",
          "brand" : "君悦",
          "business" : "外滩地区",
          "city" : "上海",
          "id" : 60487,
          "location" : "31.245409, 121.492969",
          "name" : "上海外滩茂悦大酒店",
          "pic" : "https://m.tuniucdn.com/fb3/s1/2n9c/2Swp2h1fdj9zCUKsk63BQvVgKLTo_w200_h200_c1_t0.jpg",
          "price" : 689,
          "score" : 44,
          "starName" : "五星级"
        }
      },
      {
        "_index" : "hotel",
        "_type" : "_doc",
        "_id" : "432335",
        "_score" : 4.85054,
        "_source" : {
          "address" : "唐山路145号",
          "brand" : "7天酒店",
          "business" : "北外滩地区",
          "city" : "上海",
          "id" : 432335,
          "location" : "31.252585, 121.498753",
          "name" : "7天连锁酒店(上海北外滩国际客运中心地铁站店)",
          "pic" : "https://m2.tuniucdn.com/filebroker/cdn/res/c1/ba/c1baf64418437c56617f89840c6411ef_w200_h200_c1_t0.jpg",
          "price" : 249,
          "score" : 35,
          "starName" : "二钻"
        }
      },
      {
        "_index" : "hotel",
        "_type" : "_doc",
        "_id" : "434082",
        "_score" : 3.8000445,
        "_source" : {
          "address" : "复兴东路260号",
          "brand" : "如家",
          "business" : "豫园地区",
          "city" : "上海",
          "id" : 434082,
          "location" : "31.220706, 121.498769",
          "name" : "如家酒店·neo(上海外滩城隍庙小南门地铁站店)",
          "pic" : "https://m.tuniucdn.com/fb2/t1/G6/M00/52/B6/Cii-U13eXLGIdHFzAAIG-5cEwDEAAGRfQNNIV0AAgcT627_w200_h200_c1_t0.jpg",
          "price" : 392,
          "score" : 44,
          "starName" : "二钻"
        }
      }
    ]
  }
}

OK, 一共命中了三条

加上点儿

在这里插入图片描述

这样就变多 了,因为分词也变多了【而且可以看到两个词,如果都满足,得分就较高,就会排在前面】

在这里插入图片描述

multi_match:与match查询类似,只不过允许同时查询多个字段,语法:

GET /indexName/_search
{
  "query": {
    "multi_match": {
      "query": "TEXT",
      "fields": ["FIELD1", " FIELD12"]
    }
  }
}

试试

# multi_match 查询
GET /hotel/_search
{
  "query": {
    "multi_match": {
      "query": "外滩如家",
      "fields": ["brand","name","business"]
    }
  }
}

直接运行

在这里插入图片描述

可以看到,居然和上面查询的一样

【为什么?】

原因很简单,因为我们的结构中,all 就是这三个合起来的

在这里插入图片描述

如果不一样,反而出错了

但是还是建议用all 的方式,就是不要用多个字段,会降低性能,都copy_to 到all 中,成为一个字段,那样可以加快速度

22.2.2 总结

match和multi_match的区别是什么?

  • match:根据一个字段查询
  • multi_match:根据多个字段查询,参与查询字段越多,查询性能越差

相关文章:

  • 基于改进量子粒子群算法的电力系统经济调度(Matlab代码实现)
  • c语言:关键字(二)
  • 一文解决IDEA中文乱码问题
  • 调节盘的三维建模及加工工艺规程设计
  • NumPy数组维度
  • 国产API管理神器Eolink也太强了吧
  • 智慧交通的待解谜题,中科视语在首届昇腾AI创新大赛交出金奖答案
  • 仿QQ音乐(HTML+CSS)
  • java计算机毕业设计跑腿管理系统源程序+mysql+系统+lw文档+远程调试
  • 【代码随想录训练营】Day57-动态规划
  • 码云线上误删主项目文件夹的恢复
  • Maiores incidunt cupiditate reprehenderit.Ipsam doloribus in.
  • Python内置函数(55)——round
  • 《C++语言程序设计》大作业(三个模块)
  • R语言使用lightgbm包构建多分类的LightGBM模型、使用predict函数和训练好的模型进行预测推理、将推理后的概率值转化为预测标签
  • 计算机毕业设计Java企业售后服务管理系统(源代码+数据库+系统+lw文档)
  • Day19 | 每天五道题
  • 02.java课复习
  • 深入理解ReentrantReadWriteLock源码
  • 【C++基础】 MyArray 自己实现动态数组 类模板
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉