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

网站服务器一个多少钱门店门面设计效果图

网站服务器一个多少钱,门店门面设计效果图,深圳企业网络推广公司,关键词汇总目录 初识elasticsearch 什么是elasticsearch elasticsearch的发展 Lucene的优缺点 elasticsearch的优势 倒排索引 es与mysql的概念对比 文档 索引 概念对比 架构 安装es 安装kibana 安装ik分词器 分词器 安装ik分词器 ik分词器的拓展和停用词典 操作索引库…目录 初识elasticsearch 什么是elasticsearch elasticsearch的发展 Lucene的优缺点 elasticsearch的优势 倒排索引  es与mysql的概念对比 文档 索引 概念对比 架构 安装es 安装kibana 安装ik分词器  分词器 安装ik分词器 ik分词器的拓展和停用词典 操作索引库 mapping属性 创建索引库 查询、删除、修改索引库 文档操作 新增查询删除文档 修改文档 方法一全量修改 方法二增量修改 RestClient的操作 什么是RestClient hotel数据结构分析 索引库操作 初始化JavaRestClient 创建索引库 删除索引库 判断索引库是否存在 文档操作 初始化JavaRestClient 添加文档 查询文档 修改文档 删除文档 批量导入文档 什么是elasticsearch 1、一个开源的分布式搜索引擎可以用来实现搜索、日志统计、分析、系统监控等功能 什么是elastic stack (ELK) 2、是以elasticsearch为核心的技术栈包括beats、Logstash、kibana、elasticsearch 什么是Lucene 3、是Apache的开源搜索引擎类库提供了搜索引擎的核心API 什么是文档和词条 1、每一条数据就是一个文档 2、对文档中的内容分词得到的词语就是词条 什么是正向索引 1、基于文档id创建索引。查询词条时必须先找到文档而后判断是否包含词条 什么是倒排索引 1、对文档内容分词对词条创建索引并记录词条所在文档的信息。查询时先根据词条查询到文档id而后获取到文档 文档一条数据就是一个文档es中是Json格式 字段Json文档中的字段 索引同类型文档的集合 映射索引中文档的约束比如字段名称、类型 elasticsearch与数据库的关系 1、数据库负责事务类型操作 2、elasticsearch负责海量数据的搜索、分析、计算 分词器的作用是什么 1、创建倒排索引时对文档分词 2、用户搜索时对输入的内容分词 IK分词器有几种模式 1、ik_smart智能切分粗粒度 2、ik_max_word最细切分细粒度 IK分词器如何拓展词条如何停用词条 1、利用config目录的lkAnalyzer.cfg.xml文件添加拓展词典和停用词典 2、在词典中添加拓展词条或者停用词条 mapping常见属性有哪些 1、type数据类型 2、index是否索引 3、analyzer分词器 4、properties子字段 type常见的有哪些 1、字符串text、keyword 2、数字long、integer、short、 byte、double、float 3、布尔boolean 4、日期date 5、对象object 索引库操作有哪些 1、创建索引库PUT/索引库名 2、查询索引库GET/索引库名 3、删除索引库DELETE/索引库名 4、添加字段PUT/索引库名/_mapping 文档操作有哪些 1、创建文档POST/索引库名/_doc/文档id { json文档} 2、查询文档GET/索引库名/_doc/文档id 3、删除文档DELETE/索引库名/_doc/文档id 4、修改文档: 全量修改PUT/索引库名/_doc/文档id { json文档} 增量修改POST/索引库名/_update/文档id { doc:{字段}} 索引库操作的基本步骤 1、初始化RestHighLevelClient 2、创建XxxIndexRequest。XXX是CREATE、Get、Delete 3、准备DSL ( CREATE时需要) 4、发送请求。调用RestHighLevelClient#tindices().xxx()方法xxx是create、exists、delete 文档操作的基本步骤 1、初始化RestHighLevelClient 2、创建XxxRequest。XXX是Index、Get、Update、Delete 3、准备参数(Index和Update时需要) 4、发送请求。调用RestHighLevelClient#t.xxx()方法xxx是index、get、update、delete 5、解析结果Get时需要) 初识elasticsearch 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats也就是elastic stack (ELK)。被广泛应用在日志数据分析、实时监控等领域。 elasticsearch是elastic stack的核心负责存储、搜索、分析数据。 elasticsearch的发展 Lucene的优缺点 Lucene的优势 1、易扩展 2、高性能基于倒排索引) Lucene的缺点 1、只限于Java语言开发 2、学习曲线陡峭 3、不支持水平扩展  elasticsearch的优势 相比与lucene, elasticsearch具备下列优势: 1、支持分布式可水平扩展 2、提供Restful接口可被任何语言调用 倒排索引  elasticsearch采用倒排索引: 1、文档(document)每条数据就是一个文档 2、词条(term)文档按照语义分成的词语 es与mysql的概念对比 文档 1、elasticsearch是面向文档存储的可以是数据库中的一条商品数据一个订单信息。 2、文档数据会被序列化为json格式后存储在elasticsearch中。  索引 索引 ( index)相同类型的文档的集合 映射(mapping)索引中文档的字段约束信息类似表的结构约束 概念对比 MySQLElasticsearch说明TableIndex索引index就是文档的集合类似数据库的表tableRowDocument文档Document就是一条条的数据类似数据库中的行ROW文档都是JSON格式ColumnField字段Field就是JSON文档中的字段类似数据库中的列ColumnSchemaMappingMapping映射是索引中文档的约束例如字段类型约束。类似数据库的表结构SchemaSQLDSLDSL是elasticsearch提供的JSON风格的请求语句用来操作elasticsearch,实现CRUD 架构 Mysql擅长事务类型操作可以确保数据的安全和一致性 Elasticsearch擅长海量数据的搜索、分析、计算 安装es 创建网络es-net是自己取的名字随便取 docker network create es-net 加载镜像使用提供的es.tar拖到虚拟机的tmp目录下   es.tarhttps://pan.baidu.com/s/13Z74D-liQaDL0_tM-Rl7Rg?pwd47qm运行加载命令 docker load -i es.tar 运行docker命令 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.12.1 访问网页虚拟机ip和9200端口。成功 安装kibana 加载镜像使用提供的es.tar拖到虚拟机的tmp目录下   kibanahttps://pan.baidu.com/s/1N3NiLRxLzX42jMxkK9ackQ?pwdlh2y运行docker命令 docker run -d \ --name kibana \ -e ELASTICSEARCH_HOSTShttp://es:9200 \ --networkes-net \ -p 5601:5601  \ kibana:7.12.1 访问网页虚拟机ip和5601端口。成功 点击主页的Explore on my own后打开Dev Tools 模拟一次请求可以看到右边的数据和端口9200的数据一模一样  安装ik分词器  分词器 es在创建倒排索引时需要对文档分词;在搜索时需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。 语法说明 POST请求方式 /_analyze请求路径 请求参数json风格analyzer:分词器类型。text要分词的内容  我们可以看到右边的数据分词并不友好比如世界本应该是一起的它却分开了 安装ik分词器 查看es-plugins数据卷所在的位置 docker volume inspect es-plugins  把ik文件夹放到该路径Mountpoint就是要的位置 ik文件夹https://pan.baidu.com/s/1EIkGJDvVjcGx06hDUo34Eg?pwddads重启es docker restart es 测试 ik_smart最少切分 ik_max_word最细切分   ik_smart从最多字开始判断是否切分若切分则不会再继续判断已被切分的词是否继续切分  ik_max_word会判断每个词是否能再继续分  ik分词器的拓展和停用词典 修改一个ik分词器目录中的config目录中的lkAnalyzer.cfg.xml文件 在第一个箭头这行添加ext.dic这是要用来拓展词典的文件要在lkAnalyzer.cfg.xml所在的同级目录下创建出来。 在第二个箭头这行添加stopword.dic这是要用来停用词典的文件在lkAnalyzer.cfg.xml所在的同级目录已经创建好了不需要再创建。 在ext.dic添加要拓展的词典 在stopword.dic添加要停用的词典 重启es这次重启后需要几十秒的时间才能访问网站否则网站会报错 docker restart es  再次访问网站可以看到这次测试“奥利给”并没有被分开并且“的”字并没有出现在右边。 是因为“奥利给”被写进了ext.dic “的”被写进了stopword.dic 操作索引库 mapping属性 mapping是对索引库中文档的约束常见的mapping属性包括 1、type字段数据类型常见的简单类型有: 1.1、字符串text(可分词的文本)、keyword精确值例如:品牌、国家、ip地址) 1.2、数值long、integer、short、byte、double、float 1.3、布尔boolean 1.4、日期date 1.5、对象object 2、index是否创建索引默认为true 3、analyzer使用哪种分词器 4、properties该字段的子字段 创建索引库 这里创建了一个名叫heima的索引库mappings代表它是做映射的properties代表里面是具体的字段type代表该字段的数据类型analyzer代表该字段的分词器index代表该字段是否创建索引 PUT /heima {   mappings: {     properties: {       info:{         type: text,         analyzer: ik_smart       },       email: {         type: keyword,         index: false       },       name: {         type: object,         properties: {           firstName: {             type: keyword           },           lastName: {             type: keyword           }         }       }     }   } } 运行该DSL语句后右边会出现创建的索引库名字代表创建成功 查询、删除、修改索引库 查看索引库语法 GET /索引库名称  删除索引库语法  DELETE /索引库名 索引库和mapping一旦创建无法修改但是可以添加新的字段 PUT /索引库名称/_mapping {   properties: {     新字段名: {     }   } } 文档操作 新增查询删除文档 新增文档语法 POST /索引库名/_doc/文档id {   字段1: 值1,   字段2: 值2,   字段3: {     子属性1: 值3,     子属性2: 值4   } } 新增文档右边的数据result为created。成功  查询文档语法 GET /索引库名/_doc/文档id  查询文档右边会出现文档的数据。成功 删除文档语法 DELETE /索引库名/_doc/文档id 删除文档右边数据result为deleted成功  修改文档 方法一全量修改 会删除旧文档添加新文档 PUT /索引库名/_doc/文档id {   字段1: 值1,   字段2: 值2 }  当文档存在时修改后右边的数据result为updated。修改成功 当文档不存在时修改变成了创建。 方法二增量修改 修改指定的字段注意只能写指定的字段而不是把所有字段都写上 POST /索引库名/_update/文档id {   doc: {     字段1: 值1   } }  修改后右边的result为updated。修改成功  RestClient的操作 什么是RestClient ES官方提供了各种不同语言的客户端用来操作ES。这些客户端的本质就是组装DSL语句通过http请求发送给ES。 下载提供的资料 hotel的demo和sqlhttps://pan.baidu.com/s/1uxl7PzshHu09PXsd9zDWbA?pwdv8bf在本地新建一个数据库heima若使用其他数据库名记得在demo里修改yml文件  hotel数据结构分析 写出数据库中该表的DSL语句但是不要执行。我们要使用java来执行 PUT /hotel {   mappings: {     properties: {       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       },       all: {         type: text,         analyzer: ik_max_word       }     }   } }  索引库操作 初始化JavaRestClient 在hotel.pom文件中引入es的RestHighLevelclient依赖 !--elasticsearch-- dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactId /dependency因为SpringBoot默认的ES版本是7.6.2所以我们需要覆盖默认的ES版本 propertiesjava.version1.8/java.versionelasticsearch.version7.12.1/elasticsearch.version /properties  ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.10.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcn.itcast.demo/groupIdartifactIdhotel-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamehotel-demo/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionelasticsearch.version7.12.1/elasticsearch.version/propertiesdependencies!--elasticsearch--dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.2/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency!--FastJson--dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.71/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins/build/project初始化RestHighLevelClientxxx填虚拟机ip RestHighLevelclient client new RestHighLevelclgent(RestClient.builder(         HttpHost.create( http://xxx.xxx.xxx.xxx:9200) ) ); 该代码我写成了 BeforeEach void setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200))); }AfterEach void tearDown() throws IOException {this.client.close(); }package cn.itcast.hotel;import net.sf.jsqlparser.statement.create.index.CreateIndex; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test;import java.io.IOException;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;public class HotelIndexTest {private RestHighLevelClient client;Testvoid testInit() {System.out.println(client);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }创建索引库 这个MAPPING_TEMPLATE的位置是要填写DSL语句但因为太长我就把它写成了常量 Test void createHotelIndex() throws IOException {//1、创建Request对象CreateIndexRequest request new CreateIndexRequest(hotel);//2、准备请求的参数DSL语句request.source(MAPPING_TEMPLATE, XContentType.JSON);//3、发送请求client.indices().create(request, RequestOptions.DEFAULT); }  package cn.itcast.hotel;import net.sf.jsqlparser.statement.create.index.CreateIndex; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test;import java.io.IOException;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;public class HotelIndexTest {private RestHighLevelClient client;Testvoid testInit() {System.out.println(client);}Testvoid createHotelIndex() throws IOException {//1、创建Request对象CreateIndexRequest request new CreateIndexRequest(hotel);//2、准备请求的参数DSL语句request.source(MAPPING_TEMPLATE, XContentType.JSON);//3、发送请求client.indices().create(request, RequestOptions.DEFAULT);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }public static final String MAPPING_TEMPLATE ;package cn.itcast.hotel.constants;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 }; }运行测试代码可以看到控制台运行成功。 删除索引库 Test void testDeleteHotelIndex() throws IOException {//1、创建Request对象DeleteIndexRequest request new DeleteIndexRequest(hotel);//2、发送请求client.indices().delete(request, RequestOptions.DEFAULT); }package cn.itcast.hotel;import net.sf.jsqlparser.statement.create.index.CreateIndex; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test;import java.io.IOException;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;public class HotelIndexTest {private RestHighLevelClient client;Testvoid testInit() {System.out.println(client);}Testvoid createHotelIndex() throws IOException {//1、创建Request对象CreateIndexRequest request new CreateIndexRequest(hotel);//2、准备请求的参数DSL语句request.source(MAPPING_TEMPLATE, XContentType.JSON);//3、发送请求client.indices().create(request, RequestOptions.DEFAULT);}Testvoid testDeleteHotelIndex() throws IOException {//1、创建Request对象DeleteIndexRequest request new DeleteIndexRequest(hotel);//2、发送请求client.indices().delete(request, RequestOptions.DEFAULT);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }点击该测试控制台运行成功。  判断索引库是否存在 Test void testExistsHotelIndex() throws IOException {//1、创建Request对象GetIndexRequest request new GetIndexRequest(hotel);//2、发送请求boolean exists client.indices().exists(request, RequestOptions.DEFAULT);//3、输出System.err.println(exists ? 索引库存在 : 索引库不存在); }package cn.itcast.hotel;import net.sf.jsqlparser.statement.create.index.CreateIndex; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test;import java.io.IOException;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;public class HotelIndexTest {private RestHighLevelClient client;Testvoid testInit() {System.out.println(client);}Testvoid createHotelIndex() throws IOException {//1、创建Request对象CreateIndexRequest request new CreateIndexRequest(hotel);//2、准备请求的参数DSL语句request.source(MAPPING_TEMPLATE, XContentType.JSON);//3、发送请求client.indices().create(request, RequestOptions.DEFAULT);}Testvoid testDeleteHotelIndex() throws IOException {//1、创建Request对象DeleteIndexRequest request new DeleteIndexRequest(hotel);//2、发送请求client.indices().delete(request, RequestOptions.DEFAULT);}Testvoid testExistsHotelIndex() throws IOException {//1、创建Request对象GetIndexRequest request new GetIndexRequest(hotel);//2、发送请求boolean exists client.indices().exists(request, RequestOptions.DEFAULT);//3、输出System.err.println(exists ? 索引库存在 : 索引库不存在);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }运行该测试控制台运行成功并且打印了“索引库不存在”因为刚刚删除了索引库 文档操作 初始化JavaRestClient xxx写虚拟机ip BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();}SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} } 添加文档 Test void testAddDocument() throws IOException {//根据id查询酒店数据Hotel hotel hotelService.getById(61083L);//转换成文档类型HotelDoc hotelDoc new HotelDoc(hotel);//1、准备Request对象IndexRequest request new IndexRequest(hotel).id(hotel.getId().toString());//2、准备json文档request.source({\name\:\Jack\,\age\:21},XContentType.JSON);//3、发送请求client.index(request,RequestOptions.DEFAULT); }  我这里的第二步用的是实体类转JSON的方式  package cn.itcast.hotel;import cn.itcast.hotel.pojo.Hotel; import cn.itcast.hotel.pojo.HotelDoc; import cn.itcast.hotel.service.IHotelService; import com.alibaba.fastjson.JSON; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.List;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;Testvoid testAddDocument() throws IOException {//根据id查询酒店数据Hotel hotel hotelService.getById(61083L);//转换成文档类型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://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }实体类 package cn.itcast.hotel.pojo;import lombok.Data; import lombok.NoArgsConstructor;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();} }运行该测试控制台运行成功 查询文档 Test void testGetDocumentById() throws IOException {//1、准备RequestGetRequest request new GetRequest(hotel, 61083);//2、发送请求得到响应GetResponse response client.get(request, RequestOptions.DEFAULT);//3、解析响应结果String json response.getSourceAsString();//反序列化HotelDoc hotelDoc JSON.parseObject(json,HotelDoc.class);System.out.println(hotelDoc); }package cn.itcast.hotel;import cn.itcast.hotel.pojo.Hotel; import cn.itcast.hotel.pojo.HotelDoc; import cn.itcast.hotel.service.IHotelService; import com.alibaba.fastjson.JSON; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.List;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;Testvoid testAddDocument() throws IOException {//根据id查询酒店数据Hotel hotel hotelService.getById(61083L);//转换成文档类型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);}Testvoid testGetDocumentById() throws IOException {//1、准备RequestGetRequest request new GetRequest(hotel, 61083);//2、发送请求得到响应GetResponse response client.get(request, RequestOptions.DEFAULT);//3、解析响应结果String json response.getSourceAsString();//反序列化HotelDoc hotelDoc JSON.parseObject(json,HotelDoc.class);System.out.println(hotelDoc);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }运行该测试控制台运行成功并且把数据打印了出来 修改文档 这里我只演示局部更新  Test void testUpdateDocument() throws IOException {//1、准备RequestUpdateRequest request new UpdateRequest(hotel, 61083);//2、准备请求参数request.doc(price, 952,starName, 四钻);//3、发送请求client.update(request,RequestOptions.DEFAULT); } package cn.itcast.hotel;import cn.itcast.hotel.pojo.Hotel; import cn.itcast.hotel.pojo.HotelDoc; import cn.itcast.hotel.service.IHotelService; import com.alibaba.fastjson.JSON; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.List;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;Testvoid testAddDocument() throws IOException {//根据id查询酒店数据Hotel hotel hotelService.getById(61083L);//转换成文档类型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);}Testvoid testGetDocumentById() throws IOException {//1、准备RequestGetRequest request new GetRequest(hotel, 61083);//2、发送请求得到响应GetResponse response client.get(request, RequestOptions.DEFAULT);//3、解析响应结果String json response.getSourceAsString();//反序列化HotelDoc hotelDoc JSON.parseObject(json,HotelDoc.class);System.out.println(hotelDoc);}Testvoid testUpdateDocument() throws IOException {//1、准备RequestUpdateRequest request new UpdateRequest(hotel, 61083);//2、准备请求参数request.doc(price, 952,starName, 四钻);//3、发送请求client.update(request,RequestOptions.DEFAULT);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }运行该测试控制台运行成功 删除文档 Test void testDeleteDocument() throws IOException {//1、准备RequestDeleteRequest request new DeleteRequest(hotel, 61083);//2、发送请求client.delete(request,RequestOptions.DEFAULT); }package cn.itcast.hotel;import cn.itcast.hotel.pojo.Hotel; import cn.itcast.hotel.pojo.HotelDoc; import cn.itcast.hotel.service.IHotelService; import com.alibaba.fastjson.JSON; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.List;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;Testvoid testAddDocument() throws IOException {//根据id查询酒店数据Hotel hotel hotelService.getById(61083L);//转换成文档类型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);}Testvoid testGetDocumentById() throws IOException {//1、准备RequestGetRequest request new GetRequest(hotel, 61083);//2、发送请求得到响应GetResponse response client.get(request, RequestOptions.DEFAULT);//3、解析响应结果String json response.getSourceAsString();//反序列化HotelDoc hotelDoc JSON.parseObject(json,HotelDoc.class);System.out.println(hotelDoc);}Testvoid testUpdateDocument() throws IOException {//1、准备RequestUpdateRequest request new UpdateRequest(hotel, 61083);//2、准备请求参数request.doc(price, 952,starName, 四钻);//3、发送请求client.update(request,RequestOptions.DEFAULT);}Testvoid testDeleteDocument() throws IOException {//1、准备RequestDeleteRequest request new DeleteRequest(hotel, 61083);//2、发送请求client.delete(request,RequestOptions.DEFAULT);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }运行该测试控制台运行成功 批量导入文档 Test void testBulkRequest() throws IOException {//1、创建RequestBulkRequest request new BulkRequest();//2、准备参数添加多个新增的Request这里添加两个数据分别是id为101和102的数据request.add(new IndexRequest(hotel).id(101).source(json source, XContentType.JSON));request.add(new IndexRequest(hotel).id(102).source(json source, XContentType.JSON));//3、发送请求client.bulk(request,RequestOptions.DEFAULT); }我这里改成这样是因为我要把该表的所有数据都导入文档 Test     void testBulkRequest() throws IOException {         //批量查询酒店数据         ListHotel hotels hotelService.list();         //1、创建Request         BulkRequest request new BulkRequest();         //2、准备参数添加多个新增的Request         for(Hotel hotel:hotels){             //转换为文档类型HotelDoc             HotelDoc 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);     } package cn.itcast.hotel;import cn.itcast.hotel.pojo.Hotel; import cn.itcast.hotel.pojo.HotelDoc; import cn.itcast.hotel.service.IHotelService; import com.alibaba.fastjson.JSON; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.xcontent.XContentType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.List;import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;SpringBootTest public class HotelDocumentTest {Autowiredprivate IHotelService hotelService;private RestHighLevelClient client;Testvoid testAddDocument() throws IOException {//根据id查询酒店数据Hotel hotel hotelService.getById(61083L);//转换成文档类型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);}Testvoid testGetDocumentById() throws IOException {//1、准备RequestGetRequest request new GetRequest(hotel, 61083);//2、发送请求得到响应GetResponse response client.get(request, RequestOptions.DEFAULT);//3、解析响应结果String json response.getSourceAsString();//反序列化HotelDoc hotelDoc JSON.parseObject(json,HotelDoc.class);System.out.println(hotelDoc);}Testvoid testUpdateDocument() throws IOException {//1、准备RequestUpdateRequest request new UpdateRequest(hotel, 61083);//2、准备请求参数request.doc(price, 952,starName, 四钻);//3、发送请求client.update(request,RequestOptions.DEFAULT);}Testvoid testDeleteDocument() throws IOException {//1、准备RequestDeleteRequest request new DeleteRequest(hotel, 61083);//2、发送请求client.delete(request,RequestOptions.DEFAULT);}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);}BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://xxx.xxx.xxx.xxx:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }运行该测试控制台运行成功并且可以看到导入了201条数据正好表的数据量 代码文件点击下载https://pan.baidu.com/s/1NJnwlfThymqPRhqWqqP0FQ?pwd6c0n 上一篇SpringAMQP的配置和使用
http://www.w-s-a.com/news/43276/

相关文章:

  • 公司网站如何做seowordpress付费资源
  • 福田做商城网站建设哪家公司便宜点WordPress安装子目录
  • 南京建设交易中心网站wordpress 拼车
  • 上海今天发生的重大新闻5条河南网站seo费用
  • 广东深圳最新情况临安网站seo
  • 华为快速建站女人做春梦网站
  • 建外贸网站费用手机排行榜zol
  • 长治网站制作的网站做网站要什么知识条件
  • discuz 做门户网站wordpress怎么添加图片不显示图片
  • 东营网站建设方案范文百度应用搜索
  • 网站 常见推广js代码放wordpress哪里
  • 靖江网站开发徐州住房和城乡建设局网站
  • 南宁网站建设公司如何为老板打造网站赚钱的wordpress optimizer
  • 做微商好还是开网站好网站网络推广
  • 网站建设岗位所需技能泊头网站优化
  • 企业网站建设是什么网络营销岗位介绍
  • 网站做cdn怎么弄昆明网站seo报价
  • 拖拽网站如何建立微网站
  • 网站网站做代理微信群卖房卡南宁建站模板大全
  • 网络公司怎么优化网站百度快速排名技术培训教程
  • 建e室内设计网 周婷站长工具seo综合查询源码
  • 塔式服务器主机建网站定制美瞳网站建设
  • 网站是先解析后备案吗永久免费网站模板
  • wordpress站点演示php根据ip 跳转网站
  • 东莞市凤岗建设局网站网站开发有哪些职位
  • 企业网站手机版模板免费下载辣条网站建设书
  • 南昌网站建设维护vc 做网站源码
  • 网站动态logo怎么做织梦移动端网站怎么做
  • 三亚城乡建设局网站app下载安装官方网站
  • 公司被其它人拿来做网站郑州哪家做网站最好