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

自己做网站 需要哪些东西北京最新公告

自己做网站 需要哪些东西,北京最新公告,wordpress 站内搜索 慢,微信开发者平台官网登录Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器#xff1f;如何自定义分词器#xff1f;拼音分词器注意事项#xff1f; 自动补全数据同步集群搭建ES集群结构创… Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器如何自定义分词器拼音分词器注意事项 自动补全数据同步集群搭建ES集群结构创建es集群集群状态监控创建索引库1利用kibana的DevTools创建索引库2利用cerebro创建索引库 查看分片效果ES集群中的节点角色ES脑裂ES集群的分布式存储ES集群的分布式查询ES集群的故障转移 RestClient 查询所有 void testMatchAll() throws IOException {//1.准备RequestSearchRequest request new SearchRequest(hotel);//2.准备DSLrequest.source().query(QueryBuilders.matchAllQuery());//3.发送请求SearchResponse response restClient.search(requ est , RequestOptions.DEFAULT);System.out.println(response);}高亮 高亮API包括请求DSL构建和结果解析两部分。 构建 request.source().highlighter(new HghlightBuilder().field(name)//是否需要与字段匹配.requireFieldMatch(false))Testpublic void testHighLight() throws IOException {//1 准备RequestSearchRequest request new SearchRequest(hotel);//2 准备DSLrequest.source().query(QueryBuilders.matchQuery(name , 如家));//2.2 高亮request.source().highlighter(new HighlightBuilder().field(name).requireFieldMatch(false));//3 发送请求SearchResponse response restClient.search(request , RequestOptions.DEFAULT);//4 解析响应SearchHits searchHits response.getHits();//5 获取总条数long total searchHits.getTotalHits().value;//4.2 文档数组SearchHit[] hits searchHits.getHits();//4.3 遍历for(SearchHit hit : hits){//获取文档sourceString json hit.getSourceAsString();//反序列化HotelDoc hotelDoc JSON.parseObject(json , HotelDoc.class);//获取高亮结果MapString , HighlightField highlightFields hit.getHighlightFields();//根据字段名获取高亮结果HighlightField highlightField hightlightFields.get(name);//获取高亮值String name highlightField.getFragments()[0].string();//覆盖非高亮结果hotelDoc.setName(name);}}所有搜索DSL的构建记住一个API SearchRequest的source()方法。 高亮结果解析是参考JSON结果逐层解析 算分控制 FunctionScoreQueryBuilder functionScoreQuery QueryBuilders.functionScoreQuery(//原始查询相关性算分的查询boolQuery ,new FunctionSocreQueryBuilder.FilterFunctionBuilder[]{new FunctionScoreQueryBuilder.FilterFunctionBuilder(//过滤条件QueryBuilders.termQuery(isAd , true),//算分函数ScoreFuntionBuilders.weightFactorFuntion(10))} );数据聚合 聚合的分类 聚合aggregations可以实现对文档数据的统计、分析、运算。聚合常见的有三类 桶Bucket聚合用来对文档做分组 TermAggregation:按照文档字段值分组Date Histogram:按照日期阶梯分组例如一周为一组或者一月为一组 度量Metric聚合用以计算一些值比如最大值、最小值、平均值等 Avg求平均值Max求最大值Min求最小值Stats同时求max、min、avg、sum等 管道pipeline聚合其他聚合的结果为基础做聚合 什么是聚合 聚合是对文档数据的统计、分析、计算 聚合的常见种类有哪些 Bucket对文档数据分组并统计每组数量Metric对文档数据做计算例如avgPipeline基于其他聚合结果再做聚合 参与聚合的字段类型必须是 keyword数值日期布尔 DSL实现Bucket聚合 GET /hotel/_search {size:0, // 设置size为0结果中不包含文档只包含聚合结果aggs:{ // 定义聚合brandAgg:{ // 给聚合起个名字terms:{ // 聚合的类型按照品牌值聚合所以选择termfield:brand, // 参与聚合的字段size:20 // 希望获取的聚合结果数量}}} }aggs代表聚合与query同级此时query的作用是 限定聚合的文档范围 聚合必须的三要素 聚合名称聚合类型聚合手段 聚合可配置属性有 size指定聚合结果数量order指定聚合结果排序方式field指定聚合字段 DSL实现Metrics聚合 例如我们要求获取每个品牌的用户评分的min、max、avg等值 GET /hotel/_search {size:0,aggs:{brandAgg:{terms:{field:brand,size:20},aggs:{// 是brands聚合的子聚合也就是分组后对每组分别计算score_status:{ // 聚合名称stats:{ // 聚合类型这里stats可以计算min、max、avg等field:score// 聚合字段这里可以是score}}}}} }RestAPI实现聚合 Testpublic void testAggregation() throws IOException {// 准备RequestSearchRequest request new SearchRequest(hotel);// 准备DSL// 设置sizerequest.source().size(0);// 聚合request.source().aggregation(AggregationBuilders.terms(brandAgg).size(20).field(brand));//发出请求SearchResponse response restClient.search(request, RequestOptions.DEFAULT);//解析聚合结果Aggregations aggregations response.getAggregations();//根据名称获取聚合结果Terms brandTerms aggregations.get(brand_agg);//获取桶List? extends Terms.Bucket buckets brandTerms.getBuckets();for (Terms.Bucket bucket : buckets) {//获取key也就是品牌信息String brandName bucket.getKeyAsString();System.out.println(brandName);}}实现对品牌、城市、星级的聚合 Testpublic MapString , ListString testMap() throws IOException {// 准备RequestSearchRequest request new SearchRequest(hotel);// 准备DSL// 设置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 response restClient.search(request, RequestOptions.DEFAULT);//解析聚合结果Aggregations aggregations response.getAggregations();MapString , ListString result new HashMap();result.put(brandAgg , getAggByName(brandAgg , aggregations));result.put(cityAgg , getAggByName(cityAgg , aggregations));result.put(starAgg , getAggByName(starAgg , aggregations));return result;}private ListString getAggByName(String name , Aggregations aggregations){ListString result new ArrayList();Terms terms aggregations.get(name);for (Terms.Bucket bucket : terms.getBuckets()) {String keyAsString bucket.getKeyAsString();result.add(keyAsString);}return result;}拼音分词器 如何使用拼音分词器 下载pinyin分词器 解压并放到elasticsearch的plugin目录 重启 如何自定义分词器 创建索引库时在settings中配置可以包含三部分 character filter tokenizer filter 拼音分词器注意事项 为了避免搜索到同音字搜索时不要使用拼音分词器 自动补全 elasticsearch提供了Completion Suggester查询来实现自动补全功能。这个查询会匹配以用户输入内容开头的词条并返回。为了提高补全查询的效率对于文档中字段的类型有一些约束 参与补全查询的字段必须是completion类型字段的内容一般是用来补全的多个词条形成的数组 // 自动补全查询 GET /test2/_search {suggest:{titleSuggest:{text:s,completion:{field:title,skip_duplicates:true,size:10}}} }自动补全对字段的要求 类型是completion类型字段值是多词条的数组 Test public void testSuggest() throws IOException {// 准备RequestSearchRequest request new SearchRequest(hotel);// 准备DSLrequest.source().suggest(new SuggestBuilder().addSuggestion(suggestions , SuggestBuilders.completionSuggestion(suggestion).prefix(h).skipDuplicates(true).size(10)));// 发起请求SearchResponse response client.search(request,RequestOptions.DEFAULT);// 解析结果Suggest suggest response.getSuggest();// 根据名称获取补全结果CompletionSuggestion suggestion suggest.getSuggestion(hotelSuggestion);//获取options并遍历for(CompletionSuggestion.Entry.Option option : suggestion.getOptions()){String text option.getText().string();System.out.println(text);} }数据同步 同步调用 优点实现简单粗暴缺点业务耦合度高 异步通知 优点低耦合实现难度一般缺点依赖mq的可靠性 监听binlog 优点完全解除服务间耦合缺点开启binlog增加数据库负担、实现复杂度高 异步通知数据同步步骤 定义config文件声明队列和交换机bean并绑定队列与交换机在增加删除修改接口中发送mq消息到指定的增删改队列定义监听器监听mq消息并修改es文档 集群搭建 ES集群结构 单机的es做数据存储必然面临两个问题海量数据存储问题单点故障问题 海量数据存储问题将索引库从逻辑上拆分N个分片shard存储到多个节点单点故障问题将分片数据在不同节点备份replica 创建es集群 首先编写一个docker-compose.yml文件内容如下 version: 2.2 services:es01:image: elasticsearch:7.12.1container_name: es01environment:- node.namees01- cluster.namees-docker-cluster- discovery.seed_hostses02,es03- cluster.initial_master_nodeses01,es02,es03- ES_JAVA_OPTS-Xms512m -Xmx512mvolumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastices02:image: elasticsearch:7.12.1container_name: es02environment:- node.namees02- cluster.namees-docker-cluster- discovery.seed_hostses01,es03- cluster.initial_master_nodeses01,es02,es03- ES_JAVA_OPTS-Xms512m -Xmx512mvolumes:- data02:/usr/share/elasticsearch/dataports:- 9201:9200networks:- elastices03:image: elasticsearch:7.12.1container_name: es03environment:- node.namees03- cluster.namees-docker-cluster- discovery.seed_hostses01,es02- cluster.initial_master_nodeses01,es02,es03- ES_JAVA_OPTS-Xms512m -Xmx512mvolumes:- data03:/usr/share/elasticsearch/datanetworks:- elasticports:- 9202:9200 volumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridgees运行需要修改一些linux系统权限修改/etc/sysctl.conf文件 vi /etc/sysctl.conf添加下面的内容 vm.max_map_count262144然后执行命令让配置生效 sysctl -p通过docker-compose启动集群 docker-compose up -d集群状态监控 kibana可以监控es集群不过新版本需要依赖es的x-pack 功能配置比较复杂。 这里推荐使用cerebro来监控es集群状态官方网址https://github.com/lmenezes/cerebro 双击的cerebro.bat文件即可启动服务。 访问http://localhost:9000 即可进入管理界面 输入你的elasticsearch的任意节点的地址和端口点击connect即可 绿色的条代表集群处于绿色健康状态。 创建索引库 1利用kibana的DevTools创建索引库 在DevTools中输入指令 PUT /itcast {settings: {number_of_shards: 3, // 分片数量number_of_replicas: 1 // 副本数量},mappings: {properties: {// mapping映射定义 ...}} }2利用cerebro创建索引库 利用cerebro还可以创建索引库 填写索引库信息 点击右下角的create按钮 查看分片效果 回到首页即可查看索引库分片效果 ES集群中的节点角色 elasticsearch中集群节点有不同的职责划分 ES脑裂 默认情况下每个节点都是master eligible节点因此一旦master节点宕机其他候选节点会选举一个称为主节点。当主节点与其他节点网络故障时可能发生脑裂问题。 为了避免脑裂需要要求选票超过eligible节点数量1/2才能当选为主因此eligible节点数量最好是奇数。对应配置项是discovery.zen.minimux_master_nodes,在es7.0以后已经成为默认配置因此一般不会发生脑裂问题。 master eligible结点的作用 参与集群选主主节点可以管理集群状态、管理分片信息、处理创建和删除索引库的请求 data结点的作用 数据的CRUD coordinator结点的作用 路由请求到其他节点合并查询到的结果返回给用户 ES集群的分布式存储 当新增文档时应该保存到不同的分片保证数据均衡那么coordinating node如何确定数据该存储到哪个分片呢elasticsearch会通过hash算法来计算文档应该存储到哪个分片 shard hash(_routing) % number_of_shards说明 _routing默认是文档的id算法与分片数量有关因此索引库一旦创建分片数量不能修改 ES集群的分布式查询 elasticsearch的查询分为两个阶段 scatter phase:分散阶段coordinating node会把请求分发到每一个分片gather phase:聚集阶段coordinating node汇总data node的搜索结果并处理为最终结果集返回给用户 ES集群的故障转移 集群的master节点会监控集群中的节点状态如果发现有节点宕机会立即将宕机节点的分片数据迁移到其他节点确保数据安全这个叫做故障转移
http://www.w-s-a.com/news/745011/

相关文章:

  • 三台建设局网站网页设计购物网站建设
  • thinkphp大型网站开发市场调研公司招聘
  • 天宁区建设局网站七冶建设集团网站 江苏
  • 越南网站 后缀湘潭新思维网站
  • 环球旅行社网站建设规划书网钛cms做的网站
  • 软件资源网站wordpress不能识别语言
  • 东坑仿做网站西安私人网站
  • 公司想做个网站怎么办如何搭建视频网站
  • .net网站架设凯里网站建设哪家好
  • seo网站建站建站国外百元服务器
  • 家具网站开发设计论文企业网站里面的qq咨询怎么做
  • 网站视频提取软件app淘宝店购买网站
  • 站长之家域名解析做百度推广网站咱们做
  • 行业 网站 方案莱州网站建设公司电话
  • 丹东谁做微网站威海网络科技有限公司
  • 寻找网站建设_网站外包自助打印微信小程序免费制作平台
  • 台式机网站建设vk社交网站做婚介
  • 创建网站得花多少钱网站建设的技术路线
  • 图书馆网站建设汇报免费编程软件哪个好用
  • 手机搭建网站工具网站搜索引擎优化的基本内容
  • 网站快速排名二手交易网站开发技术路线
  • 官方网站开发公司施工企业会计王玉红课后答案
  • 网站建设能用手机制作吗网站建设所需物资
  • 阜阳做网站的公司阳江招聘网最新消息
  • 织梦可以做哪些类型型网站wordpress 融资
  • 建设银行手机银行官方网站下载安装腾讯企点账户中心
  • 品牌设计网站有哪些商务网站建设平台
  • 新增网站备案时间什么是软件外包产业
  • 张家界做网站买了网站模版怎么做
  • 六安品牌网站建设怎么样知名商城网站建设报价