自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(416)
  • 收藏
  • 关注

原创 Elasticsearch N-gram分词器介绍 (7)

一.概述  Ngram是一种基于统计语言模型的算法。Ngram基本思想是将文本里面的内容按照字节大小进行滑动窗口操作,形成长度是N的字节片段序列。此时每一个字节片段称为gram。对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间。列表中的每一种gram就是一个特征向量维度。  应用场景:    1)要分词的文本是:没有空格...

2024-04-24 14:42:00 291

原创 Elasticsearch 所有内置分词器介绍(6)

一.概述  Tokenizer分词器接收字符流(es的text类型),将其分解为单个term(通常是单个单词), 然后输出标记流。分词器除了分解,还负责记录以下内容:    1)记录每个单词(term)的顺序或位置(用于”phrase短语“和单词邻近性查询)    2)term原始单词的开始和结束字符偏移量(使用 ”highlighting高亮“ 搜索显示)    3)token类型,...

2024-04-24 10:44:00 321

原创 Elasticsearch 所有内置分析器介绍(5)

Elasticsearch附带了各种内置分析器,可以直接在任何索引中使用,而无需额外配置:  1) 标准分析器Standard Analyzer    该分析器的文本分词规则是:过滤掉大多数标点符号来划分单词,通过Unicode 文本分割算法,再转成小写的分词。    支持删除常用的停用词(如:the, a 等),需要配置fileter英文停用词。    该分析器是ES的默认分析...

2024-04-19 16:44:00 304

原创 Elasticsearch 创建自定义分析器(4)

一.自定义分析器  当内置分析器不能满足时,可以创建一个自定义分析器,自定义分析器(analyzer)由:      1)0或多个 charactcr filter 字符过滤器      2) 1个 tokenizer 分词器,将文本切分为分词       3)0或多个 token filter 令牌过滤器,是属于分词后再过滤  自定义配置参数如下type分析器类型,接...

2024-04-11 11:52:00 420

原创 Elasticsearch 配置内置分析器(3)

一. 内置分析器(analyzer)  内置分析器无需任何配置即可直接使用,也支持配置选项来更改其行为。  下面示例,分别使用了自定义分析器与内置分析器PUT my-index-000001{ "settings": { "analysis": { "analyzer": { "std_english": { #自定义分析器名为std...

2024-04-09 10:34:00 257

原创 Elasticsearch 配置与测试分析器 (2)

一. 配置文本分析器(Configure text analysis)   默认情况下,Elasticsearch 使用standard分析器来进行文本分析,如果使用该分析器,则不用额外的配置。如果不满足,可以使用其它内置分析器,也可以创建自定义的分析器更好的控制,通常在生产实战中都是自定义分析器,方便更好扩展。  1.1.下面使用内置的whitespace分析器来看下效果(后续会介绍内置...

2024-04-08 11:43:00 258

原创 Elasticsearch 认识分词(1)

一.概述  分词是构建倒排索引的重要一环。根据语言不同可以分为英文分词、中文分词等;根据分词实现的不同又分为标准分词器、空格分词器、停用词分词器等。在传统的分词器不能解决特定业务场景的问题时,往往需要自定义分词器。  1.1认识分词    对于分词操作来说,英语单词分词相对简单,因为单词之间都会以空格或者标点隔开,举例如下  A man can be destroyed,but not...

2024-04-07 17:25:00 277

原创 动态判断是否需要Api接口鉴权

一.概述  问题:    在使用 asp.net core api 做业务开发时,在本地vs开发环境,部署后的测试环境,都需要先获取access_token,才能访问api接口,这样浪费了调试与测试时间。 现状:    我这里是通过Apollo 配置中心定义了二套配置环境,一是Dev环境:用于本地vs开发环境,部署后的测试环境; 二是:Pro环境用于生产环境。    通过k...

2024-03-28 15:14:00 292

原创 倒排索引

  倒排索引主要由两部分组成:      1)单词词典,即每个文档进行分词后的词项在去重后组成的集合;      2)倒排文件是倒排列表持久化存储的结果,通常保存在磁盘等存储设备上。倒排列表记录了词项所在文档的文档列表、单词频率等信息。    我们以4个文档为例:文档编号文档内容1作为一款领先的聊天助手,ChatGPT 凭借其卓越的 AI技术为用户带来无与伦比的智...

2024-03-27 10:54:00 376

原创 数据清洗使用Parallel 多线程

一.概述  在开发数据清洗时,ES数据集有600w条,每一条的子对象又有几十条,需要拿到子对象去重后的集合,使用分批提取ES数据,共535批。开始使用List来操作,关键代码如下: var specListAll = new List<SpecInfo>(); for (int i = 0; i < batchCount; i+...

2024-03-21 18:09:00 232

原创 elasticsearch 在.net core中使用Script脚本批量更新

目的:  目前有一家供应商数据有110w条数据,需要每天更新全部数据的Createtime创建时间(创建时间到秒不能全部都是一样的),如果使用es游标或者使用分页查询出来再更新,方案是行不通的,这时想到使用Script脚本来批量更新(半小时内全部更新完成),代码如下所示: /// <summary> /// 定时作业调用,设置xx电子物料创建时间...

2024-02-27 17:05:00 303

原创 linux cpu 内存分析

1.通过分析服务器资源,当发现资源消耗过多时,需要分析什么进程占用了,如下所示2.分析第一台服务器  通过登录服务器,使用top命令查看,出来信息如下所示:  进程182618的内存占用了52.6%,属于.net应用程序,通过已维护的文档,知道了哪些.net程序的部署了,最终找到是该web应用程序内存占用过高,如下所示:...

2024-02-23 17:50:00 250

原创 scrapy 响应文本乱码(不支持Brotli解压)

一.介绍  在scrapy中,默认不支持Brotli解压,当发现响应乱码时,如何分析确定是由Brotli压缩引起的呢?    1)是看请求头是否有'Accept-Encoding': "gzip, deflate, br" 中的br,如果去掉br 再请求网页,如果响应不成功,则表示服务端只支持br压缩格式,如果成功则看是否乱码。    2) 添加中间件调试查看,使用的是哪种压缩格式,关键...

2024-01-31 10:59:00 262

原创 elasticsearch 聚合查询

1.查看一天时间内,ip的去重总数post hqbuy_event_tracking-*/_search{ "query":{ "range": { "create_timestamp": { "gte": 1702310400, "lt": 1702396800 } } }, "size":0, "a...

2023-12-13 16:35:00 367

原创 elasticsearch from + size must be less than or equal to: [10000] but was [100000]

说明:当分页查询时,默认最大总数是10000(from+size<=10000),当我现在业务需要查询最大100000条时,就报错了。方案1:可以为某个es放开到指定的返回总数,也可以对整个es的索引做设置。但这样对内存消耗很大, 可能导致内存溢出,elasticsearch重启又会恢复默认10000  基于特定索引生效配置put <index_name>/_setti...

2023-08-24 10:37:00 205

原创 将博客搬至CSDN

本人的博客将如数全部搬至CSDN。个人CSDN博客地址:https://blog.csdn.net/weixin_43394129

2023-08-18 15:35:00 106

原创 elasticsearch 索引重建实战

一.介绍  索引结构一但创建好后,是无法直接修改索引字段类型的,也无法直接删除索引中某一个字段,也无法增加分片,要解决这些问题,只能索引重建。  新增字段是不需要索引重建的。  下面是索引重建的一个案例:    当时创建一个索引后,在运行一段时间,发现索引字段应该为keyword类型,而不应该是keyword和text二种复合类型。还有创建日期CreateDate和CreateTime只...

2023-07-11 15:27:00 590

原创 url参数值编码

16. url参数路径编码  示例: AM95C60-20GC/30 为路径中一段,完整url:https://blog.csdn.net/AM95C60-20GC/30 ,如果这样访问将报404错误,转换代码后为AM95C60-20GC%2F30:import urlliburllib.parse.quote(item['PN'],safe='')...

2023-07-10 10:18:00 46

原创 docker 清空容器日志

说明:docker默认情况下都是开启日志的, 容器运行一段时间后, 容器日志量也很大,当查看容器日志时(docker logs 1c1d1d7e9b26),大量日志也不好分析,又占存储量,需要清空,步骤如下:1.查看所有容器docker ps -a2.找到容器目录位置  第二个cd是指容器id, 与上面红色剪头id对应cd /var/lib/docker/containers...

2023-06-21 11:03:00 520

原创 elasticsearch bulk批量操作

说明: 在做业务增删改时,有时批量执行比循环中单个执行性能要好很多,在es中有批量执行方法(除了script),如下(.net)代码: public BulkResponse BulkUpdate(List<IBulkOperation> bulkOperationList) { BulkRequest bulkRequest...

2023-06-21 10:13:00 320

原创 curl 用法以及验证代理ip

说明:  1)在程序中,使用代理ip请求目标网站时,有的网站会返回403或其它错误,这时可以通过命令方式来验证代理ip是否可用。  在linux中,使用curl ,下面使用阿布云代理ip请求目标网站,来确认是否能正确响应数据curl -x "http://http-dyn.abuyun.com:9020" --proxy-basic --proxy-user H73IJ788GTJ0Q...

2023-06-20 11:08:00 670

原创 elasticsearch 子文档nested类型查询

1.json 数据结构如下{ "took" : 3, "timed_out" : false, "_shards" : { "total" : 6, "successful" : 6, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 162,...

2023-06-08 18:05:00 136

原创 Elasticsearch 大量频繁使用UpdateByQuery 脚本更新字段值 报错

下面是出错内容:WARNING:elasticsearch:POST http://es-cn-09k1o69vj0006jcz9.public.elasticsearch.aliyuncs.com:9200/crawl_basis_pn/_update_by_query [status:500 request:0.015s]DEBUG:elasticsearch:> {"query...

2023-06-05 16:41:00 467

原创 python xml操作

1) 导入import xml.etree.ElementTree as ET2)需要一个xml文件(sensorexpert_brand.xml),结构如下所示:<?xml version="1.0" encoding="UTF-8"?><response> <error>0</error> <msg>succ...

2023-05-30 10:16:00 42

原创 阿里云centos 磁盘扩容

步骤1  进入阿里云 控制台 云服务器ecs,选择对应的实例,进入存储与快照 云盘, 扩容,按需求购买。步骤2  远程连接实例,使用fdisk -l 查看是否存在,如下图所示:  购买的100G,已显示,需要挂载到某个Device中。  vda:代表系统盘,vda1 代表系统盘第1个分区,这里有三个分区,需挂载到第3分区上。  这里代表是gpt分区表,GPT分区表与MBR分区表...

2023-05-26 16:25:00 166

原创 使用cmd 执行scrapy命令

说明: 在使用scrapy的playwright爬取时,需要打开浏览器才能抓取到,所有要部署到windows环境中,在win服务器中安装配置好python环境后,把scrapy项目的源码复制到服务器目录中,这里服务器项目的目录是:C:\python-project\ebs-python-crawler,如下图所示: 打开cmd,执行以下命令启动抓取...

2023-04-06 10:15:00 137

原创 OpenIddict 介绍

一.什么是OpenIddict  OpenIddict 是一个开源的通用框架 ,用于在任何 ASP.NET Core 2.1(及更高版本)和遗留 ASP.NET 4.6.1(及更高版本)应用程序中构建符合标准的 OAuth 2.0/OpenID Connect 服务器。  OpenIddict 授权服务器中集成包括: 直通模式和事件模型。OpenIddict允许自定义控制器的Action...

2023-02-22 11:09:00 393

原创 OAuth 2.0 OAuth令牌 4

一.OAuth 令牌是什么  令牌表示的是授权行为的结果:一个令牌元组,包括资源拥有者、客户端、授权服务器、受保护的资源、权限范围以及其他与授权决策有关的信息。授权服务器要知道如何生成令牌来颁发给客户端,资源服务器要知道如何识别并验证客户端发送过来的令牌。  令牌可以具有有效期,可以支持撤回。令牌可以代表特定的用户或者系统中所有用户,也可以不代表任何用户。  令牌可以具有内部结构,可以是随...

2023-02-05 10:38:00 64

原创 OAuth 2.0 安全漏洞 (客户端,资源拥有者,授权服务器,令牌)3

一. 客户端漏洞   1.针对客户端的CSRF攻击    在上一篇中说过,授权码许可和隐式许可类型中都提到了推荐使用state参数,state参数防止CSRF,CSRF是互联网上最常见的攻击之一,攻击者会将恶意的javascriprt代码嵌入到网页中,在用户不知的情况下向某个特定任务的URL发送请求。    比如一个支持授权码许可类型的OAuth客户端,它从授权服务器回调端点(Redire...

2023-01-30 17:00:00 135

原创 keycloak API授权范围自定义

一.介绍  Oauth 2.0中有一个scope的概念,表示API授权范围,具体介绍考参:受保护的资源章节, keycloak的具体定义操作如下:  1.登录keycloak授权服务器  2.将Realm 领域切换,我这里是ebs领域  3.点击菜单Client scopes,新增一个scope, 我这里取名为write_update保存,如下所示:  4.点击菜单 Clients...

2023-01-11 18:05:00 180

原创 OAuth 2.0 基础介绍 1

1.OAuth 2.0是什么  OAuth 2.0是一个授权协议框架,全称(Open Authorization)是为用户资源的授权提供了一个安全的、开放而又简易的标准。互联网很多服务如Web API都提供了OAUTH认证服务。为桌面程序、手机端或web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。  最常见的是客户端应用,代表资源拥有者访问受保护的资源。2. 为什么要用...

2023-01-11 17:50:00 40

原创 OAuth 2.0 构建客户端、受保护资源、授权服务器 介绍 2

一.客户端  OAuth 客户端和授权服务器需要相互了解才能通信,客户端必需有一个client_id(标识符 用字符串表示),client_id由授权服务器来创建管理,每个客户端标识符必须是唯一的。客户端程序除了client_id还需要一个client_secret(共享秘钥),用于与授权服务器交互时,对客户端自身的身份认证。  客户端除了上二项,还有其它一此配置选项。例如redirect_...

2023-01-11 17:49:00 100

原创 python中判断json的key是否存在,以及动态获取key和value

import jsonbody={'discountPrice':{'1':'5.4847','59':'5.1938','100':'4.9030'}} #将dict类型的数据转换成strjsDumps=json.dumps(body)jsLoads = json.loads(jsDumps)if ('discountPrice' in jsLoads) : print(...

2022-12-30 16:11:00 895

原创 scrapyrt 部署到docker

一.背景  scrapyrt是实时抓取api框架,我们生产环境一直使用默认的python 3.6.8环境,来部署的scrapyrt。但由于自动化抓取playwright至少需要python 3.7以上,又因为阿里云centos 8默认的python 3.6.8升级后带来很多不便,现在需要将scrapyrt部署到docker中,在docker中scrapyrt基于python 3.8。  1....

2022-12-28 10:57:00 128

原创 系列14 docker 数据管理 下

一.数据卷容器  如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其它容器挂载。  首先创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:[root@k8s-host opt]# docker run -it -v /dbdata --name dbdata ubuntu...

2022-12-27 11:06:00 25

原创 elasticsearch 配置设置事项

前言:本篇考虑Elasticsearch 7.6 官方文档, 熟悉下Elasticsearch的设置事项,参考资料:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html一. 配置事项  1.设置(Java虚拟机)JVM选项,需要关注的是设置堆的大小,默认1G,该文件的默认位置是config/j...

2022-12-27 11:04:00 696

原创 elasticsearch 查询示例

1. 代码含义: 当前索引ext_cms_article,查询条件伪代码是:article_type=2 AND (article_tabnames OR article_title OR article_content ORarticle_author) 其中operator:and 查询命中率高, 具体含义看官方介绍post ext_cms_article/_sea...

2022-12-27 11:01:00 51

原创 StackExchange.Redis 客户端

一. Pipelining管道  许多redis客户允许您使用管道,是将多条消息通过管道发送的过程,而无需等待每个消息的回复,并且(通常)在稍后收到回复时对其进行处理。在.net中通过awit async来实现。  例如:要使用过程阻塞代码对这两个get进行管道传输var aPending = db.StringGetAsync("a");var bPending = db.Stri...

2022-12-27 11:00:00 32

原创 RabbitMQ 笔记1

一.什么是消息中间件消息队列有两种模式:点对点(p2p,point -to -point)模式和发布订阅(PUB/Sub)模式。点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步转输成为可能。发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题(topic),主题可以认为是消息传递的中介,消息发布者将消息发布到某个主...

2022-12-27 10:53:00 19

原创 RabbitMQ 笔记3 RabbitMQ .net客户端开发

1.连接Connection  实例化一个ConnectionFactory对象来创建连接,可以指定参数(IP,port, username, password)。也可以选择使用url的方式来实现。2.创建信道Channel  Connection接口被用来创建一个Channel,创建后,Channel可以用来发送或者接收消息了。Connection可以用来创建多个Channel实例,但是...

2022-12-27 10:53:00 27

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除