首页 文章 精选 留言 我的

精选列表

搜索[聚类],共10000篇文章
优秀的个人博客,低调大师

Elasticsearch查询及聚合类DSL语句宝典

作者:京东科技 纪海雨 前言 随着使用es场景的增多,工作当中避免不了去使用es进行数据的存储,在数据存储到es当中以后就需要使用DSL语句进行数据的查询、聚合等操作,DSL对SE的意义就像SQL对MySQL一样,学会如何编写查询语句决定了后期是否能完全驾驭ES,所以至关重要,本专题主要是分享常用的DSL语句,拿来即用。 一、match 如果match 查询数字,日期,布尔值或者not_analyzed 的字符串时,会精确匹配搜索值,不做分词解析;如果match 查询全文本,会对查询词做分词解析,然后搜索。 比如对keyword 类型的tag 查询,"京东总部"不会分词,必须完全相等的词才会被搜索出来 {a "query": { "match": { "content" : { "tag" : "京东总部" } } } } 比如"宝马多少马力"会被分词为"宝马 多少 马力", 所有有关"宝马 多少 马力", 那么所有包含这三个词中的一个或多个的文档就会被搜索出来。并且根据lucene的评分机制(TF/IDF)来进行评分 { "query": { "match": { "content" : { "query" : "宝马多少马力" } } } } 二、match_phrase 如果想要精确匹配所有同时包含"宝马 多少 马力"的文档,就要使用 match_phrase 了 { "query": { "match_phrase": { "content" : { "query" : "宝马多少马力" } } } } 三、mult_match 如果我们希望两个字段进行匹配,其中一个字段有这个文档就满足的话,使用multi_match { "query": { "multi_match": { "query" : "我的宝马多少马力", "fields" : ["title", "content"] } } } 四、term 关键字精确匹配,不分词解析。注意 term 包含(contains) 操作,而非 等值(equals)判断。如果文档包含full_text 及其他词,也会命中返回。 使用term要确定的是这个字段是否“被分析”(analyzed),默认的字符串是被分析的。 比如下面的例子,其中的full_text是被分析过的,所以full_text的索引中存的就是[quick, foxes],而extra_value中存的是[Quick Foxes!] PUT my_index { "mappings": { "my_type": { "properties": { "full_text": { "type": "string" }, "exact_value": { "type": "string", "index": "not_analyzed" } } } } } PUT my_index/my_type/1 { "full_text": "Quick Foxes!", "exact_value": "Quick Foxes!" } 请求不出数据的,因为full_text分词后的结果中没有[Quick Foxes!]这个分词 GET my_index/my_type/_search { "query": { "term": { "full_text": "Quick Foxes!" } } } 五、terms 指定多值精确匹配,如果字段包含了指定值中的任何一个值,那么文档满足条件。类似sql中的in { "terms": { "tag": [ "search", "full_text", "nosql" ] } } 六、range 数字/时间的区间查询,操作符: •gt > greater than •gte >= •lt < litter than •lte <= { "query":{ "range": { "age": { "gte": 20, "lt": 30 } } } } 七、wildcard 通配符索引。* 表示全匹配,? 表示单一匹配。扫描所有倒排索引,性能较差 { "query": { "wildcard": { "companyName": "*京东*" } } } 八、regexp 正则索引。扫描所有倒排索引,性能较差 { "query": { "regexp": { "postcode": "W[0-9].+" } } } 九、组合多查询(bool查询) bool 查询后面可以跟这四种匹配模式 •must 必须匹配 •must_not 必须不匹配 •should 匹配任意,等价or •filter 必须匹配:过滤模式 比如我们想要请求"content 中带宝马,但是tag 中不带宝马"这样类似的需求,就需要用到bool 联合查询。 { "query":{ "bool":{ "must":{ "term":{ "content":"宝马" } }, "must_not":{ "term":{ "tags":"宝马" } } } } } 十、聚合 聚合包含一下两种: 1、 指标聚合(Metric Aggregation):一些数学运算,可以对文档字段进行统计分析 •输出一个值 ▪min ▪max ▪sum ▪avg ▪ value_count 统计某字段有值的文档数 ▪ cardinality 某字段值去重计数 •输出多个值 ▪stats ▪percentiles ▪percentile_ranks 2、桶聚合(Bucket Aggregation) :一些列满足特定条件的文档的集合,相当于sql 的groupby •terms 对某个字段统计每个不同的内容,以及出现文档的个数 •range 某个范围内文档的个数 默认聚合范围是全文,但是如果有query查询,那么聚合的范围就是query查询的结果。 value_count 统计某字段有值的文档数 { "size": 0, "aggs": { "count": { "value_count": { "field": "companyName" } } } } 指定查询语句进行统计 { "query": { "term": { "companyName": "安徽科达智慧能源科技有限公司" } }, "aggs": { "count": { //自定义名称 "terms": { "field": "companyName" } } } }  以上就是本期分享的DSL语句,小伙伴们结合自己的使用查询场景进行操练起来吧。

优秀的个人博客,低调大师

JavaScript库中处理本地存储类库

Local Storage Bridge https://github.com/krasimir/lsbridge 如果你必须在同一个浏览器中从一个标签页发送消息到另一个标签页,你不必用艰难的方式。Local storage bridge在这里让任务变得更简单。 基本使用: // 发送 lsbridge.send(‘app.message.error’, { error: ‘Out of memory’ }); // 监听 lsbridge.subscribe(‘app.message.error’, function(data) { console.log(data); // { error: ‘Out of memory’ } }); Basil.js http://wisembly.github.io/basil.js/ Basil.js统一了session、localStorage和cookie,为你提供了一种处理数据的直接方法。 基本使用: let basil = new Basil(options); basil.set(‘name’, ‘Amy’); basil.get(‘name’); basil.remove(‘name’); basil.reset(); store.js https://github.com/marcuswestin/store.js Store.js像其他东西一样处理数据存储。但还有更多的功能,它的一个高级特性是让你更深入地访问浏览器支持。 基本使用: store.set(‘book’, { title: ‘JavaScript’ }); // Store a book store.get(‘book’); // Get stored book store.remove(‘book’); // Remove stored book store.clearAll(); // Clear all keys lscache https://github.com/pamelafox/lscache 它与localStorage API类似。事实上,它是localStorage的一个封装器,并使用HTML5模拟memcaches函数。在上面的文档中发现更多的功能。 基本使用: lscache.set(‘name’, ‘Amy’, 5); // 数据将在5分钟后过期 lscache.get(‘name’); Lockr https://github.com/tsironis/lockr Lockr建立在localStorage API之上。它提供了一些有用的方法来更轻松地处理本地数据。 是什么让你要使用此库而不是localStorage API? 好吧,localStorage API仅允许你存储字符串。如果要存储数字,则需要先将该数字转换为字符串。在Lockr中不会发生这种情况,因为Lockr允许你存储更多的数据类型甚至对象。 基本使用: Lockr.set(‘name’, ‘Amy’); Lockr.set(‘age’, 28); Lockr.set(‘books’, [{title: ‘JavaScript’, price: 11.0}, {title: ‘Python’, price: 9.0}]); Barn https://github.com/arokor/barn Barn在localStorage之上提供了一个类似Redis的API。如果持久性很重要,那么你将需要这个库来保持数据状态,以防发生错误。 基本使用: let barn = new Barn(localStorage); // 原始类型 barn.set(‘name’, ‘Amy’); let name = barn.get(‘name’); // Amy // List barn.lpush(‘names’, ‘Amy’); barn.lpush(‘names’, ‘James’); let name1 = barn.rpop(‘names’); // Amy let name2 = barn.rpop(‘names’); // James localForage https://github.com/localForage/localForage 这个简单而快速的库将通过IndexedDB或WebSQL使用异步存储来改善Web的脱机体验。它类似于localStorage,但具有回调功能。 基本使用: localforage.setItem(‘name’, ‘Amy’, function(error, value) { // Do something }); localforage.getItem(‘name’, function(error, value) { if (error) { console.log(‘an error occurs’); } else { // Do something with the value } }); 中文文档:https://localforage.docschina.org/ crypt.io https://github.com/jas-/crypt.io crypt.io使用标准JavaScript加密库实现安全的浏览器存储。使用crypto.io时,有三个存储选项:sessionStorage,localStorage或cookie。 基本使用: let storage = crypto; let book = { title: ‘JavaScript’, price: 13 }; storage.set(‘book’, book, function(error, results) { if (error) { throw error; } // Do something }); storage.get(‘book’, function(error, results) { if (error) { throw error; } // Do something });

优秀的个人博客,低调大师

OpenBSD 6.6 发布,类 Unix 操作系统

OpenBSD 6.6 发布了,OpenBSD 是一个专注于代码正确和文档准确的专注于安全的操作系统,其强调可移植性、标准化、正确性、前摄安全性以及集成的密码技术。该项目还开发广为使用且受欢迎的 OpenSSH(OpenBSD Secure Shell)软件,它利用 SSH 协议为计算机网络提供加密的通信会话。 主要更新内容: 修复了对物理内存大于 1023GB 的 amd64 计算机的支持 drm(4)更新 octeon 平台现在使用clang(1)作为基本系统编译器 除了 aarch64、amd64、armv7、i386、mips64el、parc64 之外,clang(1)现在还提供了powerpc 架构 在 armv7 和 i386 的基础上禁用了 gcc 当在租约中提供 mtu 时,阻止dhclient(8)重复获取新租约 防止多个线程在读/写模式下打开wscons(4)设备 允许非 root 用户在首次打开设备时成为drm(4)设备的所有者 在tmux(1)中添加了对格式搜索、匹配和替换修饰符的正则表达式支持 在tmux(1)的源文件中添加了 -v 标志,以显示命令和行号 在tmux(1)中添加了可与鼠标或键盘一起使用的简单菜单。引入了命令 “display-menu”,以默认情况下在状态行上显示绑定到鼠标的菜单,并以树、客户端和缓冲区模式添加了菜单 更改了tmux(1)中 swap-window -d 的行为以匹配 swap-pane 在tmux(1)中允许窗格为空,并允许使用 split-window 或 display-message -I 将输出通过管道传递给它们 调整了tmux(1),使其在拖动时自动滚动,以在光标到达顶行或底行时用鼠标创建选择 修复了杀死当前窗口时的tmux(1)崩溃以及其他错误修正 详情查看发布发布公告。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册