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

英文建站平台有哪些设计师招聘网

英文建站平台有哪些,设计师招聘网,seo全网优化推广,重庆建设工程信息网最新网站文章目录 初识 elasticsearch了解 ES倒排索引ES 的一些概念安装es、kibana安装elasticsearch部署kibana 分词器安装IK分词器ik分词器-拓展词库 索引库操作mapping 映射属性索引库的 CRUD 文档操作添加文档查看、删除文档修改文档Dynamic Mapping RestClient 操作索引库什么是Re… 文章目录 初识 elasticsearch了解 ES倒排索引ES 的一些概念安装es、kibana安装elasticsearch部署kibana 分词器安装IK分词器ik分词器-拓展词库 索引库操作mapping 映射属性索引库的 CRUD 文档操作添加文档查看、删除文档修改文档Dynamic Mapping RestClient 操作索引库什么是RestClient创建索引库删除索引库判断索引库是否存在 RestClient操作文档新增文档查询文档修改文档删除文档批量导入文档 初识 elasticsearch 了解 ES Elasticsearch 是一款非常强大的开源搜索引擎可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch 结合 kibana、Logstash、Beats也就是 elastic stackELK。被广泛应用在日志数据分析、实时监控等领域。 elasticsearch 是 elastic stack 的核心负责存储、搜索、分析数据。 Lucene是一个Java语言的搜索引擎类库是Apache公司的顶级项目由DougCutting于1999年研发。官网地址https://lucene.apache.org/ 。 Lucene的优势 易扩展高性能基于倒排索引 Lucene的缺点 只限于Java语言开发学习曲线陡峭不支持水平扩展 2004年Shay Banon基于Lucene开发了Compass 2010年Shay Banon 重写了Compass取名为Elasticsearch。 官网地址: https://www.elastic.co/cn/ 目前最新的版本是7.12.1 相比与luceneelasticsearch具备下列优势 支持分布式可水平扩展提供Restful接口可被任何语言调用 搜索引擎技术排名 Elasticsearch开源的分布式搜索引擎Splunk商业项目SolrApache的开源搜索引擎 什么是 elasticsearch 一个开源的分布式搜索引擎可以用来实现搜索、日志统计、分析、系统监控等功能 什么是 elastic stackELK 是以elasticsearch为核心的技术栈包括beats、Logstash、kibana、elasticsearch 什么是 Lucene 是Apache的开源搜索引擎类库提供了搜索引擎的核心API 倒排索引 传统数据库如MySQL采用正向索引例如给下表tb_goods中的id创建索引 正向索引和倒排索引 elasticsearch采用倒排索引 文档document每条数据就是一个文档词条term文档按照语义分成的词语 posting list 倒排索引中包含两部分内容 词条词典Term Dictionary记录所有词条以及词条与倒排列表Posting List之间的关系会给词条创建索引提高查询和插入效率倒排列表Posting List记录词条所在的文档id、词条出现频率 、词条在文档中的位置等信息 文档id用于快速获取文档词条频率TF文档在词条出现的次数用于评分 什么是文档和词条 每一条数据就是一个文档对文档中的内容分词得到的词语就是词条 什么是正向索引 基于文档id创建索引。查询词条时必须先找到文档而后判断是否包含词条 什么是倒排索引 对文档内容分词对词条创建索引并记录词条所在文档的信息。查询时先根据词条查询到文档id而后获取到文档 ES 的一些概念 文档 elasticsearch是面向文档存储的可以是数据库中的一条商品数据一个订单信息。 文档数据会被序列化为json格式后存储在elasticsearch中。 索引index相同类型的文档的集合 映射mapping索引中文档的字段约束信息类似表的结构约束 概念对比 架构 Mysql擅长事务类型操作可以确保数据的安全和一致性 Elasticsearch擅长海量数据的搜索、分析、计算 文档一条数据就是一个文档es中是Json格式 字段Json文档中的字段 索引同类型文档的集合 映射索引中文档的约束比如字段名称、类型 elasticsearch与数据库的关系 数据库负责事务类型操作elasticsearch 负责海量数据的搜索、分析、计算 安装es、kibana 安装elasticsearch 部署单点es 因为我们还需要部署kibana容器因此需要让es和kibana容器互联。这里先创建一个网络 docker network create es-net加载镜像 通过 docker pull 命令拉取 elasticsearch docker pull elasticsearch:7.16.2arm linux docker pull arm64v8/elasticsearch:7.16.2kibana docker pull kibana:7.16.2运行 运行docker命令部署单点es docker run -d \--name es \-e ES_JAVA_OPTS-Xms512m -Xmx512m \-e discovery.typesingle-node \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \ elasticsearch:7.16.2命令解释 -e cluster.namees-docker-cluster设置集群名称-e http.host0.0.0.0监听的地址可以外网访问-e ES_JAVA_OPTS-Xms512m -Xmx512m内存大小-e discovery.typesingle-node非集群模式-v es-data:/usr/share/elasticsearch/data挂载逻辑卷绑定es的数据目录-v es-logs:/usr/share/elasticsearch/logs挂载逻辑卷绑定es的日志目录-v es-plugins:/usr/share/elasticsearch/plugins挂载逻辑卷绑定es的插件目录--privileged授予逻辑卷访问权--network es-net 加入一个名为es-net的网络中-p 9200:9200端口映射配置 在浏览器中输入http://10.211.55.6:9200 即可看到elasticsearch的响应结果 部署kibana kibana可以给我们提供一个elasticsearch的可视化界面便于我们学习。 部署 运行docker命令部署kibana docker run -d \ --name kibana \ -e ELASTICSEARCH_HOSTShttp://es:9200 \ --networkes-net \ -p 5601:5601 \ kibana:7.16.2--network es-net 加入一个名为es-net的网络中与elasticsearch在同一个网络中-e ELASTICSEARCH_HOSTShttp://es:9200设置elasticsearch的地址因为kibana已经与elasticsearch在一个网络因此可以用容器名直接访问elasticsearch-p 5601:5601端口映射配置 kibana启动一般比较慢需要多等待一会可以通过命令 docker logs -f kibana查看运行日志当查看到下面的日志说明成功 此时在浏览器输入地址访问http://10.211.55.6:5601即可看到结果 DevTools kibana 中提供了一个DevTools界面 这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。 分词器 es在创建倒排索引时需要对文档分词在搜索时需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。 我们在kibana的DevTools中测试 POST /_analyze {text: java学习中勿扰程序员, analyzer: standard }语法说明 POST请求方式/_analyze请求路径这里省略了http://10.211.55.6/:9200有kibana帮我们补充请求参数json风格 analyzer分词器类型这里是默认的standard分词器text要分词的内容 安装IK分词器 处理中文分词一般会使用IK分词器。https://github.com/medcl/elasticsearch-analysis-ik 在线安装ik插件 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip#退出 exit #重启容器 docker restart elasticsearch离线安装ik插件 1查看数据卷目录 安装插件需要知道 elasticsearch 的 plugins 目录位置而我们用了数据卷挂载因此需要查看 elasticsearch 的数据卷目录通过下面命令查看: docker volume inspect es-plugins显示结果 [{CreatedAt: 2023-11-17T15:52:1908:00,Driver: local,Labels: null,Mountpoint: /var/lib/docker/volumes/es-plugins/_data,Name: es-plugins,Options: null,Scope: local} ]说明plugins目录被挂载到了/var/lib/docker/volumes/es-plugins/_data 这个目录中。 2解压缩分词器安装包 把ik分词器解压缩重命名为ik 3上传到es容器的插件数据卷中 也就是/var/lib/docker/volumes/es-plugins/_data 4重启容器 # 4、重启容器 docker restart es# 查看es日志 docker logs -f es5测试 IK分词器包含两种模式 ik_smart最少切分 ik_max_word最细切分 POST /_analyze {text: java学习中勿扰程序员, analyzer: ik_max_word }结果 {tokens : [{token : java,start_offset : 0,end_offset : 4,type : ENGLISH,position : 0},{token : 学习,start_offset : 4,end_offset : 6,type : CN_WORD,position : 1},{token : 中,start_offset : 6,end_offset : 7,type : CN_CHAR,position : 2},{token : 勿扰,start_offset : 8,end_offset : 10,type : CN_WORD,position : 3},{token : 程序员,start_offset : 11,end_offset : 14,type : CN_WORD,position : 4},{token : 程序,start_offset : 11,end_offset : 13,type : CN_WORD,position : 5},{token : 员,start_offset : 13,end_offset : 14,type : CN_CHAR,position : 6}] }ik分词器-拓展词库 要拓展ik分词器的词库只需要修改一个ik分词器目录中的 config 目录中的IkAnalyzer.cfg.xml 文件 然后在名为 ext.dic 的文件中添加想要拓展的词语即可 要禁用某些敏感词条只需要修改一个ik分词器 目录中的 config 目录中的IkAnalyzer.cfg.xml 文件 然后在名为 stopword.dic 的文件中添加想要拓展的词语即可 分词器的作用是什么 创建倒排索引时对文档分词用户搜索时对输入的内容分词 IK分词器有几种模式 ik_smart智能切分粗粒度ik_max_word最细切分细粒度 IK分词器如何拓展词条如何停用词条 利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典和停用词典在词典中添加拓展词条或者停用词条 索引库操作 mapping 映射属性 mapping是对索引库中文档的约束常见的mapping属性包括 type字段数据类型常见的简单类型有 字符串text可分词的文本、keyword精确值例如品牌、国家、ip地址数值long、integer、short、byte、double、float、布尔boolean日期date对象object index是否创建索引默认为trueanalyzer使用哪种分词器properties该字段的子字段 mapping常见属性有哪些 type数据类型index是否索引analyzer分词器properties子字段 type常见的有哪些 字符串text、keyword数字long、integer、short、byte、double、float布尔boolean日期date对象object 索引库的 CRUD ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语法如下 # 创建索引库 PUT /wxx {mappings: {properties: {info: {type: text,analyzer: ik_smart},email: {type: keyword,index: false},name: {type: object,properties: {firstName: {type: keyword},lastName: {type: keyword}}}}} }查看索引库语法 GET /索引库名 示例 GET /wxx删除索引库的语法 DELETE /索引库名 示例 DELETE /wxx修改索引库 索引库和mapping一旦创建无法修改但是可以添加新的字段语法如下 PUT /索引库名/_mapping {properties: {新字段名:{type: integer}} }示例 PUT /wxx/_mapping {properties: {age:{type: integer}} }索引库操作有哪些 创建索引库PUT /索引库名查询索引库GET /索引库名删除索引库DELETE /索引库名添加字段PUT /索引库名/_mapping 文档操作 添加文档 新增文档的 DSL 语法如下 查看、删除文档 查看文档语法 GET /索引库名/_doc/文档id 示例 GET /wxx/_doc/文档id 删除索引库的语法 DELETE /索引库名/_doc/文档id 示例 DELETE /wxx/_doc/文档id 修改文档 方式一全量修改会删除旧文档添加新文档 方式二增量修改修改指定字段值 文档操作有哪些 创建文档POST /索引库名/_doc/文档id { json文档 }查询文档GET /索引库名/_doc/文档id删除文档DELETE /索引库名/_doc/文档id修改文档 全量修改PUT /索引库名/_doc/文档id { json文档 }增量修改POST /索引库名/_update/文档id { “doc”: {字段}} Dynamic Mapping 当我们向ES中插入文档时如果文档中字段没有对应的mappingES会帮助我们字段设置mapping规则如下 我们插入一条新的数据其中包含4个没有mapping的字段 插入文档时es会检查文档中的字段是否有mapping如果没有则按照默认mapping规则来创建索引。如果默认mapping规则不符合你的需求一定要自己设置字段mapping RestClient 操作索引库 什么是RestClient ES官方提供了各种不同语言的客户端用来操作ES。这些客户端的本质就是组装DSL语句通过http请求发送给ES。官方文档地址https://www.elastic.co/guide/en/elasticsearch/client/index.html 利用JavaRestClient实现创建、删除索引库判断索引库是否存在 根据课前资料提供的酒店数据创建索引库索引库名为hotelmapping属性根据数据库结构定义。 基本步骤如下 导入课前资料Demo分析数据结构定义mapping属性初始化JavaRestClient利用JavaRestClient创建索引库利用JavaRestClient删除索引库利用JavaRestClient判断索引库是否存在 DROP TABLE IF EXISTS tb_hotel; CREATE TABLE tb_hotel (id bigint(20) NOT NULL COMMENT 酒店id,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 酒店名称,address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 酒店地址,price int(10) NOT NULL COMMENT 酒店价格,score int(2) NOT NULL COMMENT 酒店评分,brand varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 酒店品牌,city varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 所在城市,star_name varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 酒店星级1星到5星1钻到5钻,business varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 商圈,latitude varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 纬度,longitude varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 经度,pic varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 酒店图片,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ROW_FORMAT Compact;步骤1导入课前资料Demo 首先导入课前资料提供的数据库数据 然后导入课前资料提供的项目: 步骤2分析数据结构 mapping要考虑的问题 字段名、数据类型、是否参与搜索、是否分词、如果分词分词器是什么 ES中支持两种地理坐标数据类型 geo_point由纬度latitude和经度longitude确定的一个点。例如“32.8752345, 120.2981576”geo_shape有多个geo_point组成的复杂几何图形。例如一条直线“LINESTRING (-77.03653 38.897676, -77.009051 38.889939)” 字段拷贝可以使用copy_to属性将当前字段拷贝到指定字段。示例 步骤3初始化JavaRestClient 引入es的RestHighLevelClient依赖 dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactId /dependency因为SpringBoot默认的ES版本是7.6.2所以我们需要覆盖默认的ES版本 propertiesjava.version1.8/java.versionelasticsearch.version7.16.2/elasticsearch.version /properties初始化RestHighLevelClient this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://10.211.55.6:9200) ));创建索引库 步骤4创建索引库 Test void testCreateHotelIndex() throws IOException {// 1. 创建Request对象CreateIndexRequest request new CreateIndexRequest(hotel);// 2. 准备请求参数DSL语句request.source(HotelConstants.MAPPING_TEMPLATE, XContentType.JSON);// 3. 发送请求client.indices().create(request, RequestOptions.DEFAULT); }# 酒店的mapping PUT /hotel {mappings: {properties: {all: {type: text,analyzer: ik_max_word},id: {type: keyword},name: {type: text,analyzer: ik_max_word,copy_to: all},address: {type: keyword,index: false},price: {type: integer},score: {type: integer},brand: {type: keyword,copy_to: all},city: {type: keyword},starName: {type: keyword},business: {type: keyword,copy_to: all},location: {type: geo_point},pic: {type: keyword,index: false}}} }删除索引库 步骤5删除索引库、判断索引库是否存在 删除索引库代码如下 判断索引库是否存在 判断索引库是否存在 索引库操作的基本步骤 初始化RestHighLevelClient创建XxxIndexRequest。XXX是Create、Get、Delete准备DSL Create时需要发送请求。调用RestHighLevelClient#indices().xxx()方法xxx是create、exists、delete RestClient操作文档 利用JavaRestClient实现文档的CRUD 去数据库查询酒店数据导入到hotel索引库实现酒店数据的CRUD。 基本步骤如下 初始化JavaRestClient利用JavaRestClient新增酒店数据利用JavaRestClient根据id查询酒店数据利用JavaRestClient删除酒店数据利用JavaRestClient修改酒店数据 新增文档 步骤1初始化JavaRestClient 新建一个测试类实现文档相关操作并且完成JavaRestClient的初始化 步骤2添加酒店数据到索引库 先查询酒店数据然后给这条数据创建倒排索引即可完成添加 SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;Testvoid testInit(){System.out.println(client);}Testvoid testAddDocument() throws IOException {// 根据 id 查询酒店数据Hotel hotel hotelService.getById(38665L);// 转换为文档类型HotelDoc hotelDoc new HotelDoc(hotel);// 1. 准备Request对象IndexRequest request new IndexRequest(hotel).id(hotel.getId().toString());// 2. 准备Json文档request.source(JSON.toJSONString(hotelDoc), XContentType.JSON);// 3. 发送请求client.index(request, RequestOptions.DEFAULT);}BeforeEachvoid setUp(){this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://10.211.55.6:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }运行后查看是否添加成功 查询文档 步骤3根据id查询酒店数据 根据id查询到的文档数据是json需要反序列化为java对象 修改文档 步骤4根据id修改酒店数据 修改文档数据有两种方式 方式一全量更新。再次写入id一样的文档就会删除旧文档添加新文档 方式二局部更新。只更新部分字段我们演示方式二 删除文档 步骤5根据id删除文档数据 删除文档代码如下 文档操作的基本步骤 初始化RestHighLevelClient创建XxxRequest。XXX是Index、Get、Update、Delete准备参数Index和Update时需要发送请求。调用RestHighLevelClient#.xxx()方法xxx是index、get、update、delete解析结果Get时需要 批量导入文档 利用JavaRestClient批量导入酒店数据到ES 需求批量查询酒店数据然后批量导入索引库中 思路 利用mybatis-plus查询酒店数据将查询到的酒店数据Hotel转换为文档类型数据HotelDoc利用JavaRestClient中的Bulk批处理实现批量新增文档示例代码如下 Testvoid testBulkRequest() throws IOException {// 批量查询酒店数据ListHotel hotels hotelService.list();// 1. 创建 RequestBulkRequest request new BulkRequest();// 2. 准备参数添加多个新增的Requestfor (Hotel hotel : hotels) {// 转换为文档类型 HotelDocHotelDoc hotelDoc new HotelDoc(hotel);// 创建新增文档的Request对象request.add(new IndexRequest(hotel).id(hotelDoc.getId().toString()).source(JSON.toJSONString(hotelDoc), XContentType.JSON));}// 3. 发送请求client.bulk(request, RequestOptions.DEFAULT);}
http://www.dnsts.com.cn/news/234019.html

相关文章:

  • dw怎么做网站标题图标网页建站的费用
  • 如何做英文网站外链建筑模板规格
  • 网站后台添加投票系统游戏网站建设策划方案模板
  • 查网站是否正规黄冈网站推广下载
  • 免费申请商城网站wordpress部分图片不显示
  • 买了个网站后怎么做甘肃省城乡建设网站
  • 网站开发商务合同有做网站维护的
  • 3d网站开发内蒙营销型网站建设
  • 建站流程网站上线青岛中英网站建设
  • 深圳做网站网络公司怎么样参加网站建设项目人员保障体系
  • 前端做网站如何调接口wordpress中ajax请求
  • 平原县网站建设软件开发学院
  • 新衡阳网站深圳网站建设制作培训
  • 怎么优化推广自己的网站合肥网站网站建设
  • 阿克苏地区建设局网站房产网站建设价格
  • 网站开发新动力西安旅游网站开发
  • 响应式网站和自适应网站网页升级访问更新中
  • wordpress个人网站后台登陆建设商务网站公司
  • 石家庄网站建设联系电话网站建设理论知识
  • 江苏国龙翔建设公司网站网站的布局结构
  • 网站开发职业认知小结上海一条网络科技有限公司
  • 服务器 网站 搬家定制网络开发流程
  • 网站建设现状 数据深圳保障性住房轮候查询
  • flash网站源码下载尤溪建设局网站
  • 怎么做网站背景图网站设计公司收费标准
  • 自己做游戏app的网站百度云资源搜索引擎
  • 优秀网站设计流程网站后台管理系统图片
  • 网站外的seo网站宣传模式
  • wordpress页面丢失网站优化什么意思
  • 网站收录差网站建设公司如何进行工作