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

如何做电商企业网站优化的重要性

如何做电商,企业网站优化的重要性,建设部网站1667号,抖音短视频代运营公司目录 数据聚合 Bucket示例 Metric示例 RestAPI实现聚合 自动补全 使用拼音分词 自定义分词器 实现自动补全 RestAPI实现自动补全功能 数据同步 同步调用 异步通知 监听binlog 数据聚合 聚合可以实现对文档数据的统计、分析、运算。聚合常见的有三类#xff1a; …目录 数据聚合 Bucket示例 Metric示例 RestAPI实现聚合 自动补全 使用拼音分词 自定义分词器 实现自动补全 RestAPI实现自动补全功能 数据同步 同步调用 异步通知 监听binlog 数据聚合 聚合可以实现对文档数据的统计、分析、运算。聚合常见的有三类 桶(Bucket)聚合用来对文档做分组 TermAggregation按照文档字段值分组Date Histogram按照日期阶梯分组例如一周为一组或者一月为一组度量 (Metric)聚合用以计算一些值比如: 最大值、最小值、平均值等 Avg求平均值Max求最大值Min求最小值Stats同时求成max、min、avg、sum等管道pipeline聚合其他聚合的结果为基础做聚合 需要注意的是聚合的数据不能被分词。 Bucket示例 根据品牌名称做聚合 #聚合功能 GET /hotel/_search {size: 0,// 展示的文档个数aggs: {// 聚合brandAgg: { //聚合名称terms: { //聚合方式field: brand, order: {_count: desc},size: 10 //结果展示}}} } 默认情况加Bucket聚合是对所有文档进行聚合这样对内存消耗较大因此我们可以通过query指定聚合范围 GET /hotel/_search {query: {range: {price: {gte: 100,lte: 200}}}, size: 0,aggs: {brandAgg: {terms: {field: brand,size: 10}}} } Metric示例 对每个品牌的评分进行聚合。 GET /hotel/_search {size: 0,aggs: {brandAggs: {terms: {field: brand,size: 10},aggs: {score_stats: {stats: {field: score}}}}} } 如果需要对评分做一个排序实际上是对桶聚合排序 GET /hotel/_search {size: 0,aggs: {brandAggs: {terms: {field: brand,size: 10,order: {score_stats.avg: desc}},aggs: {score_stats: {stats: {field: score}}}}} } RestAPI实现聚合 Testpublic void testAggregation() throws Exception {SearchRequest request new SearchRequest(hotel);//不需要接收文档request.source().size(0);request.source().aggregation(//聚合名称AggregationBuilders.terms(brandAgg)//聚合字段.field(brand)//取值.size(10));SearchResponse response client.search(request, RequestOptions.DEFAULT);//结果解析Aggregations aggregations response.getAggregations();Terms brand_agg aggregations.get(brandAgg);List? extends Terms.Bucket buckets brand_agg.getBuckets();for (Terms.Bucket bucket : buckets) {String brand bucket.getKeyAsString();System.out.println(brand);}} 解析结果根据ES的返回内容依次获取就好 自动补全 所谓自动补全是指输入部分内容会展示对应的相关内容 使用拼音分词 如果要实现根据字母补全内容那么就需要对文档进行拼音分词。下载对应版本的拼音分词插件 GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin. 并放入es的插件目录下 GET /_analyze {text: [我正在学分布式搜索],analyzer: pinyin } 默认的拼音分词器只会单个汉字的拼音与整句的拼音首字母分词。并不能满足我们的业务需求。因此我们需要自定义分词器。 自定义分词器 elasticsearch中分词器的组成包含三部分 character filters在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer将文本按照一定的规则切割成词条 (term)。例如keyword就是不分词;还有ik_smart。tokenizer filter将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等 自定义的分词器只能在创建索引库的时候指定 PUT /test {settings: {analysis:{analyzer: { // 自定义分词器my_analyzer: {// 分词器名称tokenizer:ik_max_word,filter:py}},filter: { // 自定义tokenizer filterpy:{ // 过滤器名称type:pinyin,// 过滤器类型这里是pinyinkeep_full_pinyin: false,keep_joined_full_pinyin: true,keep_original: true,limit_first_letter_length: 16,remove_duplicated_term : true,none_chinese_pinyin_tokenize:false}}}} } 拼音分词器只能创建倒排索引的时候使用而不适合在搜索的时候使用。 因此在创建索引库的时候可以指定搜索分词器 PUT /test {settings: {analysis:{analyzer: { // 自定义分词器my_analyzer: {// 分词器名称tokenizer:ik_max_word,filter:py}},filter: { // 自定义tokenizer filterpy:{ // 过滤器名称//.....}}}},mappings:{properties: {name :{type: text,analyzer:my_analyzer,search_analyzer: ik_smart}}} } 实现自动补全 ES提供completion Suggester查询来实现自动补全功能。这个查询会匹配以用户输入内容开头的词条并返回。为了补全查询效率对文档中字段有一定约束 参与补全的必须是completion类型字段的内容一般是用来补全的多个词条形成的数组 PUT /test {mappings:{properties:{title:{type:completion}}} }POST /test/_doc {title:[Sony,WH-1000XM3] }POST /test/_doc {title:[SK-II,PITERA] }POST /test/_doc {title:[Niotendo,switch] } # 自动补全查询 GET /test/_search {suggest: {title_suggest:{text:s, completion:{field:title,skip_duplicates: true,size: 10}}} } RestAPI实现自动补全功能 Testpublic void testSuggest() throws Exception {SearchRequest request new SearchRequest(hotel);request.source().suggest(new SuggestBuilder().addSuggestion(suggestions,//自定义后面解析响应的时候也输入这个值就好SuggestBuilders.completionSuggestion(suggestion).prefix(bj).skipDuplicates(true).size(10)));SearchResponse response client.search(request, RequestOptions.DEFAULT);CompletionSuggestion suggestions response.getSuggest().getSuggestion(suggestions);for (CompletionSuggestion.Entry.Option option : suggestions.getOptions()) {String test option.getText().string();System.out.println(test);}} 数据同步 ES一般和数据库联合使用ES的数据来源于数据库但是数据库的内容并不是一成不变的因此ES与数据库就存在了数据同步问题。 同步调用 当客户端发起请求后首先数据库进行修改修改完成后去调用搜索服务的更新ES接口等ES更新完成后返回结果给保存数据库的服务再返回给客户端 优点实现简单 缺点 代码耦合在更新完数据库后需要添加调用ES更新接口的代码耗时增加性能下降 异步通知 优点耦合度低实现难度一般 缺点依赖MQ的可靠性 监听binlog 数据库可以开启binlog功能。当数据库发生CURD时binlog会发生改变由canal通知ES服务修改ES数据。 优点完全解耦 缺点开启binlog增加数据库负担。实现复杂度高
http://www.w-s-a.com/news/878908/

相关文章:

  • wordpress设置密码访问带提示广州做网站优化哪家专业
  • 如何帮人做网站赚钱西安室内设计公司排名
  • 房产网站建设产品网站域名和邮箱域名
  • 网站建设核心优势seo求职信息
  • 网站手册自己在百度上可以做网站吗
  • 影楼网站源码建行业网站的必要性
  • 深圳app网站设计软件开发公司税收优惠政策
  • 北京市中关村有哪家可以做网站维护客户管理系统 wordpress
  • 做网站拉客户有效吗全景图网页制作工具
  • 网站建设公司行业建设网站需要提供什么资料
  • 别人的做网站网页打不开图片
  • 北京专业网站设计推荐怎么建立网站网址
  • 上海网站建设开发公司哪家好网站数据搬家
  • 杭州建站平台哪里有免费的网站推广软件
  • 深圳极速网站建设服务什么网站可以做产品入驻
  • 淄博易宝网站建设app推广拉新公司
  • 营销型外贸网站建设软件备案域名出租
  • 网站域名禁止续费m99ww094cn 苍井空做的网站
  • 上海建设工程网站大同网站建设熊掌号
  • 设计类书籍网站江苏网站建设简介模板
  • 手机企业网站推广c 手机app开发
  • 网站建设需要多少天凡客建设网站稳定吗
  • 房天下网站建设女生说wap是什么意思
  • 网站开发安全机制北京做网站多少钱合理
  • 扁平化 公司网站建设大型视频网站需要的资金量
  • 免费建各种网站淄博网站建设yx718
  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇