96SEO 2026-02-20 10:27 17
数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合

拼音分词器如何使用拼音分词器如何自定义分词器拼音分词器注意事项
自动补全数据同步集群搭建ES集群结构创建es集群集群状态监控创建索引库1利用kibana的DevTools创建索引库2利用cerebro创建索引库
查看分片效果ES集群中的节点角色ES脑裂ES集群的分布式存储ES集群的分布式查询ES集群的故障转移
SearchRequest(hotel);//2.准备DSLrequest.source().query(QueryBuilders.matchAllQuery());//3.发送请求SearchResponse
RequestOptions.DEFAULT);System.out.println(response);}高亮
request.source().highlighter(new
HghlightBuilder().field(name)//是否需要与字段匹配.requireFieldMatch(false))Testpublic
准备DSLrequest.source().query(QueryBuilders.matchQuery(name
高亮request.source().highlighter(new
HighlightBuilder().field(name).requireFieldMatch(false));//3
searchHits.getTotalHits().value;//4.2
hit.getSourceAsString();//反序列化HotelDoc
HotelDoc.class);//获取高亮结果MapString
hit.getHighlightFields();//根据字段名获取高亮结果HighlightField
hightlightFields.get(name);//获取高亮值String
highlightField.getFragments()[0].string();//覆盖非高亮结果hotelDoc.setName(name);}}所有搜索DSL的构建记住一个API
QueryBuilders.functionScoreQuery(//原始查询相关性算分的查询boolQuery
FunctionSocreQueryBuilder.FilterFunctionBuilder[]{new
FunctionScoreQueryBuilder.FilterFunctionBuilder(//过滤条件QueryBuilders.termQuery(isAd
true),//算分函数ScoreFuntionBuilders.weightFactorFuntion(10))}
聚合aggregations可以实现对文档数据的统计、分析、运算。
聚合常见的有三类
Histogram:按照日期阶梯分组例如一周为一组或者一月为一组
度量Metric聚合用以计算一些值比如最大值、最小值、平均值等
Avg求平均值Max求最大值Min求最小值Stats同时求max、min、avg、sum等
Bucket对文档数据分组并统计每组数量Metric对文档数据做计算例如avgPipeline基于其他聚合结果再做聚合
聚合的类型按照品牌值聚合所以选择termfield:brand,
size指定聚合结果数量order指定聚合结果排序方式field指定聚合字段
例如我们要求获取每个品牌的用户评分的min、max、avg等值
{size:0,aggs:{brandAgg:{terms:{field:brand,size:20},aggs:{//
是brands聚合的子聚合也就是分组后对每组分别计算score_status:{
聚合类型这里stats可以计算min、max、avg等field:score//
设置sizerequest.source().size(0);//
聚合request.source().aggregation(AggregationBuilders.terms(brandAgg).size(20).field(brand));//发出请求SearchResponse
RequestOptions.DEFAULT);//解析聚合结果Aggregations
response.getAggregations();//根据名称获取聚合结果Terms
aggregations.get(brand_agg);//获取桶List?
bucket.getKeyAsString();System.out.println(brandName);}}实现对品牌、城市、星级的聚合
设置sizerequest.source().size(0);//
聚合request.source().aggregation(AggregationBuilders.terms(brandAgg).size(20).field(brand));request.source().aggregation(AggregationBuilders.terms(cityAgg).size(20).field(city));request.source().aggregation(AggregationBuilders.terms(starAgg).size(20).field(starName));//发出请求SearchResponse
RequestOptions.DEFAULT);//解析聚合结果Aggregations
response.getAggregations();MapString
aggregations));result.put(cityAgg
aggregations));result.put(starAgg
bucket.getKeyAsString();result.add(keyAsString);}return
Suggester查询来实现自动补全功能。
这个查询会匹配以用户输入内容开头的词条并返回。
为了提高补全查询的效率对于文档中字段的类型有一些约束
参与补全查询的字段必须是completion类型字段的内容一般是用来补全的多个词条形成的数组
{suggest:{titleSuggest:{text:s,completion:{field:title,skip_duplicates:true,size:10}}}
准备DSLrequest.source().suggest(new
SuggestBuilder().addSuggestion(suggestions
SuggestBuilders.completionSuggestion(suggestion).prefix(h).skipDuplicates(true).size(10)));//
client.search(request,RequestOptions.DEFAULT);//
suggest.getSuggestion(hotelSuggestion);//获取options并遍历for(CompletionSuggestion.Entry.Option
suggestion.getOptions()){String
option.getText().string();System.out.println(text);}
优点完全解除服务间耦合缺点开启binlog增加数据库负担、实现复杂度高
定义config文件声明队列和交换机bean并绑定队列与交换机在增加删除修改接口中发送mq消息到指定的增删改队列定义监听器监听mq消息并修改es文档
单机的es做数据存储必然面临两个问题海量数据存储问题单点故障问题
海量数据存储问题将索引库从逻辑上拆分N个分片shard存储到多个节点单点故障问题将分片数据在不同节点备份replica
elasticsearch:7.12.1container_name:
cluster.initial_master_nodeses01,es02,es03-
data01:/usr/share/elasticsearch/dataports:-
elasticsearch:7.12.1container_name:
cluster.initial_master_nodeses01,es02,es03-
data02:/usr/share/elasticsearch/dataports:-
elasticsearch:7.12.1container_name:
cluster.initial_master_nodeses01,es02,es03-
data03:/usr/share/elasticsearch/datanetworks:-
bridgees运行需要修改一些linux系统权限修改/etc/sysctl.conf文件
vm.max_map_count262144然后执行命令让配置生效
kibana可以监控es集群不过新版本需要依赖es的x-pack
这里推荐使用cerebro来监控es集群状态官方网址https://github.com/lmenezes/cerebro
输入你的elasticsearch的任意节点的地址和端口点击connect即可
eligible节点因此一旦master节点宕机其他候选节点会选举一个称为主节点。
当主节点与其他节点网络故障时可能发生脑裂问题。
为了避免脑裂需要要求选票超过eligible节点数量1/2才能当选为主因此eligible节点数量最好是奇数。
对应配置项是discovery.zen.minimux_master_nodes,在es7.0以后已经成为默认配置因此一般不会发生脑裂问题。
参与集群选主主节点可以管理集群状态、管理分片信息、处理创建和删除索引库的请求
当新增文档时应该保存到不同的分片保证数据均衡那么coordinating
node如何确定数据该存储到哪个分片呢elasticsearch会通过hash算法来计算文档应该存储到哪个分片
_routing默认是文档的id算法与分片数量有关因此索引库一旦创建分片数量不能修改
集群的master节点会监控集群中的节点状态如果发现有节点宕机会立即将宕机节点的分片数据迁移到其他节点确保数据安全这个叫做故障转移
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback