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

网站关键词搜索排名优化网站建设与管理复习题

网站关键词搜索排名优化,网站建设与管理复习题,seo标题优化分析范文,3d建模培训学校哪家好文章目录 前言3 文档操作3.1 新增文档3.2 查询文档3.3 修改文档3.3.1 全量修改3.3.2 增量修改 3.4 删除文档 4 RestAPI4.1 创建数据库和表4.2 创建项目4.3 mapping映射分析4.4 初始化客户端4.5 创建索引库4.6 判断索引库是否存在4.7 删除索引库 5 RestClient操作文档5.1 准备工… 文章目录 前言3 文档操作3.1 新增文档3.2 查询文档3.3 修改文档3.3.1 全量修改3.3.2 增量修改 3.4 删除文档 4 RestAPI4.1 创建数据库和表4.2 创建项目4.3 mapping映射分析4.4 初始化客户端4.5 创建索引库4.6 判断索引库是否存在4.7 删除索引库 5 RestClient操作文档5.1 准备工作5.2 新增文档5.3 查询文档 前言 ElasticSearch学习笔记(一)倒排索引、ES和Kibana安装、索引操作 3 文档操作 3.1 新增文档 语法 POST /{索引库名}/_doc/{文档id} {字段1: 值1,字段2: 值2,字段3: {子属性1:值3,子属性2:值4}// ... }3.2 查询文档 语法 GET /{索引库名}/_doc/{文档id}3.3 修改文档 3.3.1 全量修改 全量修改是覆盖原来的文档其本质是先根据指定的id删除文档id对应的文档不存在也可以再新增一个相同id的文档。 语法 PUT /{索引库名}/_doc/{文档id} {字段1: 值1,字段2: 值2,字段3: {子属性1:值3,子属性2:值4}// ... }3.3.2 增量修改 增量修改是只修改指定id匹配的文档中的部分字段。 语法 POST /{索引库名}/_update/{文档id} {doc: {修养修改的字段: 新值} }3.4 删除文档 语法 DELETE /{索引库名}/_doc/{文档id}4 RestAPI ES官方提供了各种不同语言的客户端用来操作ES这些客户端的本质是组装DSL语句通过Http请求发送给ES。其官方文档地址https://www.elastic.co/guide/en/elasticsearch/client/index.html 其中Java语言的客户端分为两种 本文章学习的是high-level REST client。 4.1 创建数据库和表 CREATE DATABASE hsgx; USE hsgx; CREATE TABLE tb_hotel (id BIGINT(20) NOT NULL PRIMARY KEY COMMENT 酒店id,name VARCHAR(255) NOT NULL COMMENT 酒店名称,address VARCHAR(255) NOT NULL COMMENT 酒店地址,price INT(10) NOT NULL COMMENT 酒店价格,score INT(2) NOT NULL COMMENT 酒店评分,brand VARCHAR(32) NOT NULL COMMENT 酒店品牌,city VARCHAR(32) NOT NULL COMMENT 所在城市,star_name VARCHAR(16) NOT NULL COMMENT 酒店星级,business VARCHAR(255) NOT NULL COMMENT 商圈,latitude VARCHAR(32) NOT NULL COMMENT 纬度,longitude VARCHAR(32) NOT NULL COMMENT 经度,pic VARCHAR(255) DEFAULT NULL COMMENT 酒店图片 );INSERT INTO tb_hotel(id, name, address, price, score, brand, city, star_name, business, latitude, longitude, pic) VALUES (1, 白天鹅, 中山路, 888, 5, 白天鹅, 广州, 五星, 太古汇, 123.456, 456.748, a.png), (2, 希尔顿, 南京路, 456, 4.5, 希尔顿, 上海, 四星, 外滩, 123.456, 456.748, b.png);4.2 创建项目 在IDEA中创建一个maven项目结构如下 4.3 mapping映射分析 mapping映射分析要考虑的信息包括 字段名参考表结构。字段数据类型参考表结构。是否参与搜索根据具体业务进行判断。是否需要分词根据具体内容进行判断如果内容是一个整体就无需分词反之则要分词。分词器是什么可以统一使用ik_max_word。 对应到tb_hotel表我们可以新建如下索引 PUT /hotel {mappings: {properties: {id: {type: integer},name:{type: text,analyzer: ik_max_word,copy_to: all},address:{type: text,analyzer: ik_max_word,index: false},price:{type: integer},score:{type: integer},brand:{type: keyword,copy_to: all},city:{type: keyword,copy_to: all},starName:{type: keyword},business:{type: keyword},pic:{type: keyword,index: false},location:{type: geo_point},all:{type: text,analyzer: ik_max_word}}} }其中有两个比较特殊的字段 location地理坐标类型是geo_point表示由经度latitude和纬度longitude确定一个点。all一个组合字段其目的是将多字段的值 利用copy_to属性合并提供给用户搜索。在上面的例子中name、brand、city字段会合并到一起。 4.4 初始化客户端 Java客户端中与ES一切交互都封装在一个名为RestHighLevelClient的类中必须先完成这个对象的初始化建立与ES的连接。主要步骤如下 1引入依赖注意版本号和安装的ES版本一致 dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.12.1/version /dependency dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-client/artifactIdversion7.12.1/version /dependency dependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion7.12.1/version /dependency2初始化RestHighLevelClient private RestHighLevelClient client;Before void setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://192.168.153.128:9200))); }After void close() throws IOException {this.client.close(); }4.5 创建索引库 private static final String DSL {\n \mappings\: {\n \properties\: {\n \id\: {\n \type\: \integer\\n },\n \name\:{\n \type\: \text\,\n \analyzer\: \ik_max_word\,\n \copy_to\: \all\\n },\n \address\:{\n \type\: \text\,\n \analyzer\: \ik_max_word\,\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 \copy_to\: \all\\n },\n \starName\:{\n \type\: \keyword\\n },\n \business\:{\n \type\: \keyword\\n },\n \pic\:{\n \type\: \keyword\,\n \index\: false\n },\n \location\:{\n \type\: \geo_point\\n },\n \all\:{\n \type\: \text\,\n \analyzer\: \ik_max_word\\n }\n }\n }\n };Test public void testCreateHotelIndex() throws IOException {// 1.参数为索引库名称CreateIndexRequest createIndexRequest new CreateIndexRequest(hotel);// 2.设置mapping映射createIndexRequest.source(DSL, XContentType.JSON);// 3.发起创建索引库请求client.indices().create(createIndexRequest, RequestOptions.DEFAULT); }由以上代码可知创建索引库的步骤主要又三步 1创建Request对象。创建索引库的操作对应的Request对象是CreateIndexRequest。2设置mapping映射其实就是DSL的JSON参数部分。因为JSON字符串很长所以定义了一个静态字符串常量来表示让代码看起来更加优雅。3发送创建索引库请求client.indices()方法的返回值是IndicesClient类型封装了所有与索引库操作有关的方法。 执行以上单元测试在DevTools工具中查询该索引库 4.6 判断索引库是否存在 判断索引库是否存在本质是使用GET命令查询索引库因此它对应的Request对象是GetIndexRequest。 Test public void testExistsHotelIndex() throws IOException {// 1.参数为索引库名称GetIndexRequest request new GetIndexRequest(hotel);// 2.发送请求boolean exists client.indices().exists(request, RequestOptions.DEFAULT);// 3.输出System.err.println(exists ? 索引库已经存在 : 索引库不存在); }执行以上单元测试结果如下 4.7 删除索引库 删除索引库对应的Request对象是DeleteIndexRequest。 Test public void testDeleteHotelIndex() throws IOException {// 1.参数为索引库名称DeleteIndexRequest request new DeleteIndexRequest(hotel);// 2.发送请求client.indices().delete(request, RequestOptions.DEFAULT); }执行以上单元测试在DevTools工具中查询该索引库 5 RestClient操作文档 5.1 准备工作 由于上文定义的索引库hotel的mapping映射与数据库表结构有一些差异因此还需要定义一个新的实体类与索引库的mapping映射对应起来 Data NoArgsConstructor public class HotelDoc {private Long id;private String name;private String address;private Integer price;private Integer score;private String brand;private String city;private String starName;private String business;private String location;private String pic;public HotelDoc(Hotel hotel) {this.id hotel.getId();this.name hotel.getName();this.address hotel.getAddress();this.price hotel.getPrice();this.score hotel.getScore();this.brand hotel.getBrand();this.city hotel.getCity();this.starName hotel.getStarName();this.business hotel.getBusiness();this.location hotel.getLatitude() , hotel.getLongitude();this.pic hotel.getPic();} }主要的区别在于将latitude、longitude两个字段合并为location一个字段。 5.2 新增文档 新增文档的DSL语句示例如下 POST /hotel/_doc/1 {name: 白天鹅,score: 5 }对应的Java代码如下 Test public void testCreateDocIndex() throws IOException {// 1.POST /hotel/_doc/1 { name: 白天鹅, score: 5 }IndexRequest request new IndexRequest(hotel).id(1);request.source({\name\: \白天鹅\, \score\: 5}, XContentType.JSON)// 2.发送请求client.index(request, RequestOptions.DEFAULT); }执行以上单元测试在DevTools工具中查询该文档 下面实现把数据库tb_hotel表的数据读取出来并保存到ES中 Test public void testSaveHotel() throws IOException {// 1.根据id查询酒店数据Hotel hotel hotelService.getById(2);// 2.转换为文档类型HotelDoc hotelDoc new HotelDoc(hotel);// 3.将HotelDoc转jsonString json JSON.toJSONString(hotelDoc);// 4.准备Request对象IndexRequest request new IndexRequest(hotel).id(hotelDoc.getId().toString());// 5.准备Json文档request.source(json, XContentType.JSON);// 6.发送请求client.index(request, RequestOptions.DEFAULT); }执行以上单元测试在DevTools工具中查询该文档 5.3 查询文档 新增文档的DSL语句示例如下 GET /hotel/_doc/2对应的Java代码如下 Test public void testQueryHotelDoc() throws IOException {// 1.创建Request对象GetRequest request new GetRequest(hotel, 2);// 2.发送请求GetResponse response client.get(request, RequestOptions.DEFAULT);// 3.解析结果String json response.getSourceAsString();HotelDoc hotelDoc JSON.parseObject(json, HotelDoc.class);System.out.println(hotelDoc); }执行以上单元测试结果如下 … 本节完更多内容请查阅分类专栏微服务学习笔记 感兴趣的读者还可以查阅我的另外几个专栏 SpringBoot源码解读与原理分析MyBatis3源码深度解析Redis从入门到精通MyBatisPlus详解SpringCloud学习笔记
http://www.zqtcl.cn/news/876865/

相关文章:

  • 淘宝价格网站建设wordpress 点餐
  • 晋中网站建设公司汉滨区城乡建设规划局 网站
  • 2018年的网站制作湖北省随州市建设厅网站
  • 做网络销售保温材料用什么网站好企业网站的建设企业
  • 2008发布asp网站海外如何 淘宝网站建设
  • 小米云网站开发食品包装
  • 销售网站怎么做的帝国cms网站搬家教程
  • 甘肃省城市建设档案馆网站wordpress推广自己淘宝店
  • 专业做曝光引流网站国家反诈中心app下载流程
  • 深圳校园网站建设响应式手机网站制作
  • 景县住房和城乡规划建设局网站我想买个空间自己做网站
  • 网站建设申请计划宣传片拍摄方案模板
  • 网站开发项目经验描述html网站开发事例教程
  • 998元网站建设优化网站建设实训报告心得体会
  • 网站经营性备案流程搜索引擎优化的简写是
  • 长春制作网站南昌建站系统外包
  • 在火炉做网站公园坐什么车hexo wordpress 比较
  • 好的免费博客网站设计图软件
  • 网站建设合同电子版金融网站建设运营方案
  • 网站域名备案在哪里贵阳经济技术开发区网站
  • 戴尔公司网站建设成功的关键是什么网站商城建设公司
  • 用python做 网站论坛南宁网站建设 南宁联达亿
  • 做婚恋网站要多少钱网站首页页面设计多少钱
  • 营销型网站建设试卷wordpress怎么备份按在
  • 手机网站有什么区别是什么意思wordpress 推送公众号
  • 电子商务网站建设与运营app公司管理
  • 网站伪静态怎么设置优就业seo课程学多久
  • 网站开发实战 王做金融必看网站
  • 各种网站建设报价电子商务有限公司官网
  • wordpress前台用户注册网站设计 seo