深圳自助网站建设,龙岩网站设计一般要多久,运城网站建设公司有多少,郑州做网站推广的公司文章目录一、ES继承 Spring Data 框架二、SpringData 功能集成三、ES SpringData 文档搜索四、ES 优化 硬件选择五、ES 优化 分片策略六、ES 优化 路由选择七、ES 优化 写入速度优化七、ES 优化 内存设置八、ES 优化 重要配置一、ES继承 Spring Data 框架
Spring Data 是一个用…
文章目录一、ES继承 Spring Data 框架二、SpringData 功能集成三、ES SpringData 文档搜索四、ES 优化 硬件选择五、ES 优化 分片策略六、ES 优化 路由选择七、ES 优化 写入速度优化七、ES 优化 内存设置八、ES 优化 重要配置一、ES继承 Spring Data 框架
Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问。
Spring Data的官方https://spring.io/projects/spring-data
其实Spring Data框架的出现是为了更好快速的操作ES服务器简化ES的操作。 自然操作的就是Spring Data Elasticsearch对应的内容。
二、SpringData 功能集成
创建一个springboot项目。
第一步项目依赖配置文件如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentartifactIdspring-boot-starter-parent/artifactIdgroupIdorg.springframework.boot/groupIdversion2.3.6.RELEASE/versionrelativePath//parentgroupIdorg.itholmes/groupIdartifactIdes-spring/artifactIdversion1.0/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactId/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactId/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactId/dependency/dependencies/project第二步配置application.properties文件。
# es服务地址 为了项目引用
elasticsearch.host127.0.0.1
# es服务端口
elasticsearch.port9200
# 配置日志级别开启debug日志
logging.level.com.itholmes.esdebug第三步创建SpringBoot主程序。
package com.itholmes.es;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class SpringDataElasticSearchMainApplication {public static void main(String[] args) {SpringApplication.run(SpringDataElasticSearchMainApplication.class,args);}
}第四步创建实体类通过实体类来作为数据进行相关操作。
package com.itholmes.es;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;Data
NoArgsConstructor
AllArgsConstructor
ToString
public class Product {private Long id; // 商品唯一标识private String title; // 商品名称private String category; // 分类名称private Double price; // 商品价格private String images; // 图片地址
}第五步创建ElasticsearchConfig类对应的配置文件。
package com.itholmes.es;import lombok.Data;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;// ConfigurationProperties(prefix elasticsearch) 去匹配 elasticsearch.host 和 elasticsearch.port。
ConfigurationProperties(prefix elasticsearch)
Configuration
Data
public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {private String host;private Integer port;Overridepublic RestHighLevelClient elasticsearchClient() {RestClientBuilder builder RestClient.builder(new HttpHost(host, port));RestHighLevelClient restHighLevelClient new RestHighLevelClient(builder);return restHighLevelClient;}
}第六步配置 DAO数据 访问对象获取数据。
package com.itholmes.es;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;// ElasticsearchRepositoryProduct,Long 来进行操作
Repository
public interface ProductDao extends ElasticsearchRepositoryProduct,Long {}第七步配置 实体类映射操作。
package com.itholmes.es;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;Data
NoArgsConstructor
AllArgsConstructor
ToString
// 关联索引分片备份
Document(indexName product,shards 3,replicas 1)
public class Product {/*** 必须有id这里的id是全局唯一的标识等同于es中的_id。*/Idprivate Long id; // 商品唯一标识/*** type: 字段数据类型* analyzer分词器类型* index: 是否索引默认为true* Keyword短语不进行分词 就是关键字不能分开*/Field(type FieldType.Text) // ,analyzer ik_max_wordprivate String title; // 商品名称Field(type FieldType.Keyword)private String category; // 分类名称Field(type FieldType.Double)private Double price; // 商品价格Field(type FieldType.Keyword,index false) // index false 就是不做索引查询的private String images; // 图片地址
}第八步做一个测试简单走个测试就会把对应索引创建出来初始化创建。
package com.itholmes.es;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.test.context.junit4.SpringRunner;import java.util.ArrayList;RunWith(SpringRunner.class)
SpringBootTest
public class SpringDataESProductDaoTest {// 注入ElasticsearchRestTemplateAutowiredprivate ProductDao productDao;// 新增数据Testpublic void save(){// 其实就是把后台相关数据存储到了ES中。Product product new Product();product.setId(2L);product.setTitle(华为手机);product.setCategory(手机);product.setPrice(2999.0);product.setImages(http://www.itholmes/hw.jpg);productDao.save(product);// 查看get方法 http://127.0.0.1:9200/product/_doc/2}// 修改数据Testpublic void update(){Product product new Product();product.setId(2L); // id相同就是修改数据product.setTitle(华为222手机);product.setCategory(手机);product.setPrice(2999.0);product.setImages(http://www.itholmes/hw.jpg);productDao.save(product);//查看get方法 http://127.0.0.1:9200/product/_doc/2}// 根据id查询Testpublic void findById(){Product product productDao.findById(2L).get();System.out.println(product);}// 查询所有Testpublic void findAll(){IterableProduct all productDao.findAll();for (Product product : all) {System.out.println(product);}}// 删除Testpublic void delete(){Product product new Product();product.setId(2L);productDao.delete(product);}// 批量新增Testpublic void saveAll(){ArrayListProduct productList new ArrayList();for (int i 0; i 10; i) {Product product new Product();product.setId(Long.valueOf(i));product.setTitle([ i ] 小米手机);product.setCategory(手机);product.setPrice(1999.0 i);product.setImages(http://itholems.com i);productList.add(product);}productDao.saveAll(productList);}// 分页查询Testpublic void findByPageable(){// 设置排序排序方式正序还是倒序排序的idSort sort Sort.by(Sort.Direction.DESC, id);int currentPage 0; // 当前页 第一页从0开始1表示第二页int pageSize 5; // 每页显示多少条PageRequest pageRequest PageRequest.of(currentPage, pageSize, sort);PageProduct productPage productDao.findAll(pageRequest);for (Product product : productPage) {System.out.println(product);}}}三、ES SpringData 文档搜索
SpringData 文档搜索
package com.itholmes.es;import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.test.context.junit4.SpringRunner;RunWith(SpringRunner.class)
SpringBootTest
public class SpringDataESSearchTest {AutowiredProductDao productDao;// 文档搜索Testpublic void termQuery(){TermQueryBuilder termQueryBuilder QueryBuilders.termQuery(category, 手机);IterableProduct products productDao.search(termQueryBuilder);for (Product product : products) {System.out.println(product);}}// 分页请求Testpublic void termQueryByPage(){int currentPage 0;int pageSize 5;PageRequest pageRequest PageRequest.of(currentPage, pageSize);TermQueryBuilder termQueryBuilder QueryBuilders.termQuery(category, 手机);PageProduct products productDao.search(termQueryBuilder, pageRequest);for (Product product : products) {System.out.println(product);}}}此外还有Spark Streaming框架 集成、Flink框架集成等等先将数据经过它们处理之后存储到ES服务器中。
四、ES 优化 硬件选择
Elasticsearch的基础是 Lucene所有的索引和文档数据是存储在本地的磁盘中具体路径可在ES的配置文件 …/config/elasticsearch.yml中配置。
SSD是 固态硬盘。
硬件选择推荐如下
五、ES 优化 分片策略
分片 和 副本并不是无限分配的。 分片的代价
具体要根据架构师技术人员进行确认
遵循的原则 推迟分片分配
六、ES 优化 路由选择
存放规则
查询的时候有两种情况不带routing路由查询、待routing路由查询。
七、ES 优化 写入速度优化
针对搜索性能要求不高但是对于写入要求较高的场景我们需要尽可能的选择恰当写优化策略。
批量操作 优化存储设备
合理的使用合并将 段 合并 减少Refresh次数 加大Flush设置 减少副本的数量
七、ES 优化 内存设置
ES默认安装后设置的内存是1GB 对于一个现实业务来说设个设置太小了。
不过可以配置一下。
jvm.options文件进行配置
配置内存的原则 像上面那个64g的 最佳配置就是设置为31G。 -Xms 31g -Xmx 31g。
八、ES 优化 重要配置
文章转载自: http://www.morning.wnywk.cn.gov.cn.wnywk.cn http://www.morning.lqzhj.cn.gov.cn.lqzhj.cn http://www.morning.hrpbq.cn.gov.cn.hrpbq.cn http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn http://www.morning.mftdq.cn.gov.cn.mftdq.cn http://www.morning.jfymz.cn.gov.cn.jfymz.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn http://www.morning.svtxeu.com.gov.cn.svtxeu.com http://www.morning.bxrqf.cn.gov.cn.bxrqf.cn http://www.morning.srkwf.cn.gov.cn.srkwf.cn http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.nkjjp.cn.gov.cn.nkjjp.cn http://www.morning.pgggs.cn.gov.cn.pgggs.cn http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn http://www.morning.tsynj.cn.gov.cn.tsynj.cn http://www.morning.rknsp.cn.gov.cn.rknsp.cn http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn http://www.morning.yrjfb.cn.gov.cn.yrjfb.cn http://www.morning.glncb.cn.gov.cn.glncb.cn http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.xdxpq.cn.gov.cn.xdxpq.cn http://www.morning.ktntj.cn.gov.cn.ktntj.cn http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.stmkm.cn.gov.cn.stmkm.cn http://www.morning.rmdwp.cn.gov.cn.rmdwp.cn http://www.morning.qnypp.cn.gov.cn.qnypp.cn http://www.morning.wgrl.cn.gov.cn.wgrl.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.dgsr.cn.gov.cn.dgsr.cn http://www.morning.kqbjy.cn.gov.cn.kqbjy.cn http://www.morning.hclqy.cn.gov.cn.hclqy.cn http://www.morning.krbjb.cn.gov.cn.krbjb.cn http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.zqbrd.cn.gov.cn.zqbrd.cn http://www.morning.fldsb.cn.gov.cn.fldsb.cn http://www.morning.qygfb.cn.gov.cn.qygfb.cn http://www.morning.xbptx.cn.gov.cn.xbptx.cn http://www.morning.tbknh.cn.gov.cn.tbknh.cn http://www.morning.wrlff.cn.gov.cn.wrlff.cn http://www.morning.qtbnm.cn.gov.cn.qtbnm.cn http://www.morning.grbp.cn.gov.cn.grbp.cn http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn http://www.morning.lnsnyc.com.gov.cn.lnsnyc.com http://www.morning.dwwbt.cn.gov.cn.dwwbt.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.xhkgl.cn.gov.cn.xhkgl.cn http://www.morning.ngkgy.cn.gov.cn.ngkgy.cn http://www.morning.pngfx.cn.gov.cn.pngfx.cn http://www.morning.wbfg.cn.gov.cn.wbfg.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.ykqbs.cn.gov.cn.ykqbs.cn http://www.morning.nzsdr.cn.gov.cn.nzsdr.cn http://www.morning.qqbjt.cn.gov.cn.qqbjt.cn http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.stph.cn.gov.cn.stph.cn http://www.morning.nzfyx.cn.gov.cn.nzfyx.cn http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn http://www.morning.yrhd.cn.gov.cn.yrhd.cn http://www.morning.tqjks.cn.gov.cn.tqjks.cn http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn http://www.morning.hyxwh.cn.gov.cn.hyxwh.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.nrjr.cn.gov.cn.nrjr.cn http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn