flower 简单使用

Flower 是一个基于 Web 的监控和管理工具,可以用在 Celery 集群的监控和管理。和 Celery 配合使用非常不错。

Flower 可以查看 Celery 队列中 task 的数量,可以用来监控 worker 的状态并进行简单的管理,比如调整 worker 的 pool size 和 autoscale 设置,可以用来查看当前处理的 tasks, 等等。

安装

使用 pip 安装 Flower

pip install flower

或者安装开发版

pip install https://github.com/mher/flower/zipball/master

使用 #{Usage}

直接使用下面命令开启本地监听 http://localhost:5555

flower -A proj --port=5555

或者从 Celery 中开启

celery flower -A proj --address=127.0.0.1 --port=5555

如果要暴露给外网访问可以 --address=0.0.0.0:

celery flower -A worker --address=0.0.0.0 --port=5555 --basic_auth=name:password

使用 --basic_auth 来开启 HTTP 简单验证

reference


2017-11-07 flower , monitor , linux , celery , django

vim presentation

大纲

Vim 多模式编辑器

Normal mode
Insert mode
Visual mode
Command mode

插入模式

i 进入 insert mode,在光标为之前进入插入模式
I 行首非空字符前插入 , I 等同于 `^i`
s 删除光标下字符,并进入insert mode, 等同于 `cl`
S 删除光标所在一行,并进入insert mode行首 , 等同于 `^C`
a 光标之后进入insert mode
A 光标移动到行尾并进入insert mode , 等同于 `$a`
o 在光标下一行插入一行,并进入insert mode , 等同于 `A<CR>`
O 在光标上一行插入新行,并进入insert mode , O 等同于 `ko`
C 删除光标后到行尾内容,并进入insert mode , C 其实等同于 `c$` 
cc 删除行,并进入插入模式
Esc 退出 Insert 模式

Example: this is a text for testing mode.

移动

h,j,k,l

    k
    ^
h <   > l
    v
    j

H,M,L
w,W,e,E,b,B
%
0,^,$
gg, G
fx,Fx,tx,Tx,
'', g;     move cursor to last edit change

Example: This is a sentence for testing moving with a word and WO-RD test.

编辑

p   光标之后粘贴 (p)aste
P   paste before the cursor
yy  复制当前行
y   Yank 复制. Example: yw (yank word) 光标停留到词第一个字母上 yw 复制单词
y0  copy the data from cursor to begining of the line
y$  copy the data from cursor to end of the line
x   删除光标下单个字符,将其放到粘贴板,剪切
X   向前删除一个字符,相当于 Backspace
dd  删除光标所在一行,并把该行复制
dw  删除光标所在词 (d)elete (w)ord
d0  删除光标到该行最前
d^  删除光标到行首非空白字符
d$  删除光标到该行最后
J   删除光标所在行的换行符
r,R 替换

组合

Operator + Motion = Action

dw
da'

Example:
This is an 'example' for "word-to-delete".
add quote to this "word"

搜索

/pattern  - 正向搜索,从光标处开始向文件末搜索
?pattern  - 反向搜索,从光标处开始向文件首搜索
n  - 下一个,往下执行搜索命令
N  - 上一个
*  - Word under cursor - forward (bounded)
#  - Word under cursor - backward (bounded)
:n1, n2s/p1/p2/g -将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g -将文件中所有p1均用p2替换

替换

:s/p1/p2/g -将当前行中所有p1均用p2替代
:%s/old/new/g 全局替换
:'<,'>s/old/new/g 选中之后替换
:g/^$/d 删除所有空行

Example:

Text Object

dit, di', di", di), di}, di],
yi), yi]
vi', vit
ciw, ciw)

macro

qw        开启record macro, 保存到寄存器 w
q         结束录制

Example:
int a = 1
int b = 2
int c = a+b
print a
print b
print c

register

共有9大类寄存器

  • The unnamed register “”
  • 10 numbered registers “0 to “9 数字寄存器中保存着 yank 的内容
  • The small delete register “-
  • 26 named registers “a to “z or “A to “Z 可供自定义使用
  • four read-only registers “:, “., “% and “#
  • the expression register “=
  • The selection and drop registers “*, “+ and “~
  • The black hole register “_
  • Last search pattern register “/

寄存器访问 “a 寄存器前加 “

其他操作

:reg a 查看寄存器
""   noname buffer last dcsxy
"_   blackhole register
"%   filename register
"/   last search register
":   last command
insert mode <C-r> a insert text in register a
"ap  Normal mode paste text in register a

Plugin

surround.vim

cs"'      change surround " to '
cs'<q>    change surround ' to <q>
ds'       delete surround '
ysiw"     add " to word
yss)      add ) to entire line

Example:
"Hello world!"  and other strings

start

vimutor

总结

更快的编码效率


2017-11-05 vim , linux

Vim 寄存器

Vim 的寄存器可以看成 Vim 中额外用来存储信息的区域,虽然看不见,但是如果使用 x, s, y, p 等等命令的时候都无意识的使用到了 Vim 的寄存器(register).

Vim 中每一个 register 都可以通过添加双引号的方式来访问,比如 "a 来访问 a 寄存器。

可以通过选择然后使用 y 来将内容放到寄存器中,比如 "ay 来将选择的内容 yank 复制到 "a 寄存器。 可以使用 "ap 来粘贴 a 寄存器中的内容。

同样可以再 Insert mode 下使用 Ctrl + r 再加 a 寄存器名字来插入。这会将寄存器内容粘贴进当前编辑位置。

可以使用 :reg 命令来查看所有寄存器及其内容,或者直接在后面添加寄存器名字来查看关心的内容 :reg a b c

:reg a b c
--- Registers ---
"a   register a content
"b   register b content
"c   register c content

默认寄存器 unnamed register

Vim 有自己的 unnamed 或者说默认寄存器,可以通过 "" 来访问。任何被 d, c, s, x 删除或者 y 复制的内容都会被存放在该寄存器中,使用 p 粘贴时也是中该寄存器中粘贴内容。直接使用 p 其实等效于 ""p

数字寄存器

当使用 yank 复制一些内容,然后又执行了 d 命令,会发现粘贴时,当时 yank 的内容被 d 命令中的内容替换了,这是 Vim 非常常见的一个问题,然而问题并不在 Vim,而是 Vim 把 yank 的内容 ,delete 的内容都放到了 unnamed register 中了,但是复制的内容并没有丢失,并不需要再次回到想要复制的地方再次 yank 一遍。

这里就要介绍 Vim 的另外一种寄存器 —- 数字寄存器 numbered registers , 正如他的名字一样,数字寄存器的名字就是 "0"9

"0 寄存器永远保存着 yank 的最新内容,其他寄存器保存这历史 9 个内容,从 1 到 9 从新到老。如果复制了新的文字,永远可以通过 "0p 来粘贴。

只读寄存器 read only register

Vim 中有四个只读寄存器 "., "%, ":, "# , 最后插入的文字被保存在 ". 中,如果想要在其他地方使用刚刚输入的文字,非常方便。

"% 保存 Vim 最开始打开时,到当前文件的完整路径。最常用的组合就是将当前的路径放到粘贴板

:let @+=@%

let 命令用来向寄存器写入, "+是粘贴板寄存器,将 "% 内容写入粘贴板

": 最近执行命令寄存器。如果最近保存过文件 :w ,那么 w 会保存在寄存器中。可以使用 @: 来执行前一次命令。再比如使用替换命令替换了一行中的内容 :s/foo/bar ,那么将光标移动到另一行再次使用 @: 就能够再次替换。

"# 保存 alternative file 名字。大致可以理解为 Vim 中编辑的上一个文件,可以通过 :h alternate-file 来查看更多。当使用 Ctrl + ^ 来切换文件时,使用的就是这个寄存器保存的文件名。同样可以使用 :e Ctrl-r # 来做同样的事情。不常用。

表达式寄存器 expression register

"= 用来处理表达式结果,如果在 Insert Mode 使用 Ctrl+r+= ,然后输入 2+2<Enter> ,结果 4 会显示出来。也可以用来执行外部命令,比如 Ctrl - r = 之后输入 system('ls') <enter> 来显示 ls 的结果。

搜索寄存器 search register

"/ 这个寄存器保存最近搜索过的内容,包括 /, ?, *, # 的内容。比如说最近搜索过 /example ,想要替换成 another, 可以使用

:%s/<Ctrl-r/>/another/g

输入 :%s/ 只有按下 Ctrl + r 再按 / 会自动插入寄存器保存的内容。

搜索寄存器也是可以写的,可以使用 let 命令写入:

:let @/="keywords"

寄存器和宏 Macro 的关系

或许很多不熟悉 Vim 寄存器的用户曾经使用过 Vim 的 Macro, Vim 可以使用 Macro 来录制一连串命令,然后重复。(可以使用 :h recording 来查看更多)。

Vim 使用寄存器来保存 Macro 的命令。比如使用 qw 来录制 Macro ,寄存器 "w 会被用来记录所有录制的内容,所有的内容都有文本的形式存放。

更加 Cool 的事情就是,因为所有的内容都以文本的形式存在寄存器中,我们可以轻易的修改其中的内容,而不至于因为一个疏忽录制错误,而重新录制整个操作。

比如忘记了给文字最后添加分号,可以

:let @W='i;'

来修改录制的内容,注意 W 是大写,这是追加到寄存器的意思,插入 i; 进入插入模式并输入 ;

再比如如果需要直接修改 register 的内容,可以使用

:let @w='<Ctrl-r w>

然后修改需要修改的内容,然后以 ' 结束。

另外一个 Cool 的事情就是,因为所有的命令都是以文本的形式保存的,所以可以轻易的将录制的 macro 移动到另外的寄存器中,或者将录制的 macro 分享给其他人。

比如将录制在 w 寄存器中的内容复制给粘贴板寄存器,然后就能在其他 Vim 中使用。

总结

Vim 中的寄存器一共分为 9 大类:

  1. The unnamed register “”
  2. 10 numbered registers “0 to “9
  3. The small delete register “-
  4. 26 named registers “a to “z or “A to “Z
  5. four read-only registers “:, “., “% and “#
  6. the expression register “=
  7. The selection and drop registers “*, “+ and “~
  8. The black hole register “_
  9. Last search pattern register “/

其中大部分的寄存器上文都有涉及,其中为涉及到的 selection and drop registers 和 GUI 中选取的内容有关系。

black hole register 是一个黑洞寄存器,当写入 black hole register 时,nothing happens . 像黑洞一样吞掉所有的输入,可以用来在大量删除文本时不影响任何寄存器。

reference


2017-11-03 Vim , Linux

vim normal 命令

替换::%s/^/#/g visual block:ggI# 注释第一行后用.重复执行每一行 我们可以在第三种方法之上用normal命令实现上述需求,步骤:

光标定位到首行,执行:I# jVG选中之后的所有行 :'<,'>normal .这样刚刚选中的行都将执行.代表的最后一次操作。注:只要输入:就能实现:'<,'>,你可以注意VIm的左下角的提示。 第四种方法::%normal I#,%代表这个文件,当然你可以选择具体的范围,如::1,4normal I#

总结::normal命令可以执行任何normal 模式下的命令,更多帮助::help normal。


2017-11-03 Vim , Linux

Vim 中的宏命令

Vim 的设计哲学中有这样一句话:”if you write a thing once, it is okay. However if you’re writing it twice or more times, then you should find a better way to do it”.

Vim 的 Macro 就是用来解决重复的问题。在 Vim 寄存器的文章里面已经对 macro 有所涉及, macro 的操作都是以文本的方式存放在寄存器中。

简单使用

录制 macro,使用 q + [a-z] 26个字母中的一个

q[a-z]

之后的命令都会被记录,然后结束时再按一下 q

执行 macro 的时候,在寄存器前加 @ ,比如记录在寄存器 a 中

10@a

执行 10 遍a寄存器中记录的命令。

@@

再执行一遍上一次的命令。

编辑 macro

假设已经有一个 macro 保存在了 a 中,可以使用

  • :let @a=’
  • 输入Ctrl + r + a 来插入 a 中内容;
  • 编辑内容然后以 ' 结束 Enter 退出

查看 macro

macro 内容保存在 a 中,直接使用 :reg a 来查看内容即可。

举例

经典的注释和尾部添加

注释,或者在每一行的末尾添加特定字符,比如在每行末加上分号”;” ,对于这个操作 Vim 中有太多的方式可以完成,比如说替换 :%s/$/;/g ,比如说 . 命令,再比如这里要使用的 macro :

int a = 1
int b = 2
int c = a+b
print a
print b
print c

如果是用 . 来实现的话,首先在第一行执行A;,然后重复5次执行j.,对于这种简单文件来说很容易使用,但是如果这个文件有 1000 行,那么显然 . 命令是不可行的。使用 macro , 可以先录制一遍,然后在 1000 行上执行便可。

比如可以在normal模式下使用 qaA;<Esc>jq

  • qa 开启录制,存入 a 寄存器
  • A 在行尾进入插入模式
  • ; 插入分号
  • <Esc> 退出插入模式
  • j 下一行
  • q 退出录制

此时 a 寄存器中就保存了当前行的操作,在当前行添加 ; 并将光标移动到下一行。

录制结束后就可以使用 @a

1000@a

执行1000遍 macro ,就能将下面1000行尾部添加 ;

递增数字

可以使用 macro 实现插入 1 到 100 个数字,每一行自增一:

1
2
3
...
100

首先在第一行插入1,然后光标定位了“1”处,进入normal模式

输入一下命令

qayyp<Ctrl>aq
  • yyp 拷贝一行再粘贴在新的一行,
  • <Ctrl>a 数字+1
  • q 结束录制

最后执行

98@a

2017-11-03 vim , Linux

有一个全平台的Markdown编辑器--Typora

很早开始我就使用 haroopad ,同样是一款简洁,跨平台的 markdown 编辑器,而在 Linux 平台除非遇到特殊情况想要仔细预览效果,我也一般都只在 Vim 中直接以纯文本形式编辑 markdown。但是为什么要再来试用这样一个编辑器呢,一是我不止一次得看到别人推荐,二来也是好奇心作祟。

Typora 一如她官网 —- https://typora.io/ 的简洁。没有多余的元素,直接面向文本,好评。下面也不用介绍他的功能多少多少,这种一般直接看他的官方 feature 介绍,看使用帮助就行。下面就介绍几个比较让我开心的功能。

更加快捷的文件管理

在文本编辑器左侧边可以打开目录下所有文件,这一点是 haroopad 所没有的,如果编辑文本需要打开多个文件,那么使用之前的 haroopad 就需要同时打开多个文件,而在 Typora 中则直接在边上选择要切换的文件即可。在 Vim 中其实也用了 Nerd Tree 来实现这样的功能,能够很方便的在文件之间切换。

更加方便的Outline

Typora 有一个独立的 Outline 面板,可以轻松的在长篇文章中进行导航,快速定位。

导出格式支持多样化

haroopad 能够导出的格式只有简单的 HTML 和 PDF,而 Typora 提供了更多的选择,甚至连 Word 格式也都支持,支持的格式包括 pdf, html, docx, OpenOffice, rtf, Epub, LaTex, Media Wiki, reStructuredText, Textile, OPML 等等

缺点

不如 haroopad 一样提供的 Vim 键支持,其实如果对 Markdown 语法熟悉,也不在乎所见即所得的UI显示,完全可以使用 Vim 作为唯一的 MD 编辑,没有那么多漂亮的界面,和快速的操作,只要 Vim 都可以搞定。

这里有一篇 Typora 作者创造 Typora 的一些想法 ,其中提到了取消了独立的预览 Panel,让所有的内容所见即所得,这也是

reference


2017-11-02 Typora , markdown , Linux , Windows

headless chrome puppeteer

Headless 最早的时候在 PhantomJS 听说过这个概念,后来在 GitHub 各种项目中总有人不断提起这个概念,而最新看到的新闻便是 Chrome 开始支持 Headless,也正激起了我了解的欲望。

什么是 Headless Chrome

Headless Chrome 是一个没有前台界面,只在后台运行的浏览器。浏览器正常的所有解析,渲染都可以由其完成。而开发者可以通过 client 和这个浏览器建立连接,通过 Google 提供的 Chrome DevTools Protocol 协议 来进行交互。总的来说 Headless 浏览器提供了可编程化的浏览器工具,一切通过人工在 Chrome 中完成的事情,都可以通过编程来在 Headless Chrome 中实现。

Headless Chrome 和 Chrome 59 一起发布,Headless Chrome 将 Chromium 和 Blink 渲染引擎提供的现代WEB平台的特性带到了命令行。

Headless 浏览器能够提供自动化测试环境,服务于不需要UI界面的服务端。比如说你想要测试一个网页在真实的浏览器中的显示,并保存成PDF。

使用

在 Linux 下,我的 Chrome 安装在 /opt/google/chrome/ 目录下,创建一条 alias

alias chrome='/opt/google/chrome/chrome'

打印 DOM 结构

使用 --dump-dom 将文件内容打印到标准输出

chrome --headless --disable-gpu --dump-dom https://www.einverne.info/

将网页保存为 PDF

使用 --print-to-pdf flag 将网页文件保存成 pdf

chrome --headless --disable-gpu --print-to-pdf https://www.einverne.info

保存截图

使用 --screenshot flag 保存截图

chrome --headless --disable-gpu --screenshot https://www.einverne.info

使用 --window-size 来指定窗口大小

chrome --headless --disable-gpu --screenshot --window-size=1280,1920 https://www.einverne.info

使用 --screenshot 会在当前目录下生成一个名为 screenshot.png 的图片文件。

Debugging Chrome without UI

使用 --remote-debugging-port=9222 flag 来启动 Chrome 时,Headless Chrome 会开启 DevTools protocol 。使用该协议可以用来和 Chrome 通信,并使用指令来操作 Headless Chrome。因为没有界面,可以使用另外的浏览器访问 http://localhost:9222 来查看 Headless Chrome 的状态。

reference


2017-10-31 Chrome , Headless Chrome

Vim 键映射

Vim 本身有很多快捷键,vimrc 也可以配置很多快捷键,当然 Vim 也支持将不同的键映射到不同的键或者命令上。

最常见的键映射就是

  • nmap
  • vmap
  • imap

分别对应着修改普通模式(Normal) ,选择模式(Visual),和插入模式(Insert) 下的键映射。

对于这几种模式,可以参考 Vim 模式

Map 命令

其实对于 map 命令的种类远不止于此

  • noremap 非递归映射
  • nmap
  • vmap
  • imap
  • cmap 在命令模式下生效

递归映射,就是如果当快捷键 a 被映射成 b, b 又被映射成 c ,那么他们是递归的,那么 a 就是被映射成 c

map b a
map c b

效果等同于

map c a

默认的 map 是递归的,除了 noremap

unmap 解除映射

unmap 和 map 类似也可以添加很多前缀,表示影响的模式

mapclear 命令

mapclear 直接清除相关模式下所有的映射,也可以添加很多前缀,表示影响的模式

所以总结一下大概有如下命令:

:map   :noremap   :unmap   :mapclear 
:nmap  :nnoremap  :nunmap  :nmapclear
:vmap  :vnoremap  :vunmap  :vmapclear
:imap  :inoremap  :iunmap  :imapclear
:cmap  :cnoremap  :cunmap  :cmapclear

查看当前 Vim 配置的键绑定

通过在 vimrc 中配置不同的快捷键,影响不同模式下 Vim 的快捷键,那么可以在普通模式下使用 :map 来查看当前 Vim 配置的快捷键。

如何测试 map 生效

Vi stackoverflow 上有一篇文章 讲述的很详细。

解决的具体步骤:

  • 明确 map 的命令
  • 想要定义的快捷键具体做什么
  • 然后使用 :map 来检查定义的 map 是否已经被 Vim 识别
  • 如果还是不行,在那篇文章中检查是否遇到了常见的一些错误
  • 再不行的话就去 vi stackoverflow 等等论坛求助大神吧

2017-10-30 Vim , Linux

Vim 全局命令 g

全局命令 :g 在 Vim 中有着意想不到强大的功能。当想要在整个文件中对于匹配的行或者不匹配行进行一些操作时,应该第一时间想到这个 :g 命令。

:[range]global[!]/{pattern}/{command}

简写可以写成

:[range]g/pattern/command
  • [range] 指定文本范围,默认为整个文档
  • pattern 在范围 range 内的行如果匹配 pattern,则执行 command
  • ! 表示取反,也就是不匹配的行,也可以使用 vglobal
  • command 默认是打印文本

整个命令可以理解成,在 range 范围内匹配 patter 的行执行 Ex command。所有的 Ex command 可以使用 :help ex-cmd 来查看。

常用的 Ex command 可以参考如下例子:

  • d 删除
  • m 移动
  • t 拷贝
  • s 替换

举例

范围匹配

比如在 20 行到 200 行之间,每一行下插入空行

:20,200g/^/pu _

删除匹配的行

最简单的使用

:g/pattern/d

会删除 pattern 批量的行,再比如

:g/^$/d

可以用来删除空白行。

删除不匹配的行

匹配使用 :g ,而不匹配有两种写法:

:g!/pattern/d
:v/pattern/d

:v:in(v)erse 的缩写,如果为了记忆的话,可以记住 inverse。

删除大量匹配行

Vim 在删除操作时,会先把要删除的内容放到寄存器中,假如没有指定寄存器,会默认放到一个未命名的寄存器中,对于要删除大量匹配行的行为,可能导致 Vim 花一些时间处理这些拷贝,避免花费不必要的时间可以指定一个 blackhole 寄存器 _

:g/pattern/d_

移动匹配的行

将所有匹配的行移动到文件的末尾

:g/pattern/m$

复制匹配的行

将所有匹配的行复制到文件末尾

:g/pattern/t$

复制到 register a

Vim 每个字母都是一个寄存器,所以使用全局命令也可以将内容复制到某一个寄存器,比如 a

qaq:g/pattern/y A
  • qaq 清空寄存器 a,qa 开始记录命令到a寄存器,q 停止记录
  • y A 将匹配的行 A (append) 追加到寄存器 a 中

存放到 a 寄存器之后就可以使用 "ap 来粘贴使用或者其他操作了。

反转文件中的每一行

just show the power of :g

:g/^/m0

:g 命令一行行匹配,匹配第一行时将第一行 m0 放到文件顶部,第二行放到文件顶部,当跑完一遍之后整个文件的每一行就反转了。

在匹配行后添加文字

使用 s 命令可以实现,同样使用全局 g 命令也可以实现同样的效果

:g/pattern/s/$/mytext

这里使用到了 s 命令, substitute 命令,可以使用 :help :s 来查看。

reference


2017-10-29 Vim , Regex , Linux

kibana query syntax

Kibana 的查询语法基于 Lucene 的查询语法,他允许 boolean 值,通配符,过滤器等等操作。

字符串查询

通常一个查询会包含一个或者多个单词或者组合。一个简单的查询语句就是用引号包含的一组词,比如 “search demo”.

如果不包含双引号,Kibana 会单独的去匹配每一个词。

正则表达式查询

大部分正则表达式是允许匹配部分字符的,然而在 Lucene 中,正则表达式用来匹配整个字符串,比如 abcde 这个字符串

  • 使用 ab.* 能够匹配
  • 但是使用 abcd 是不能匹配的

正则表达式中,有一些保留字符

. ? + * | { } [ ] ( ) " \

这些字符如果出现在表达式中都需要进行转义,比如 \* ,或者 \\

这些符号的含义和正则表达式一致

  • . 用来表示任意字符
  • ? 用来表示前面的字符重复一次或零次
  • + 表示前面的字符重复一次或多次
  • * 表示前面的字符重复零次或多次
  • {n} 表示重复n次
  • {n,m} 表示重复n到m次
  • () 表示 group, 组合其他使用
  • | 表示 OR 或者,(http|https) http 或者 https 匹配
  • [] 表示括号中的任意一个

更多的关于正则表达式的内容可以参考任意一本关于正则的书。

补充,在 Kibana 中如下字符都需要转义

+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /

比如查询 (1+1)=2 需要使用 \(1\+1\)\=2

可选表达式

Lucene 中还能够开启一些扩展操作。

Complement 模式

比如 ab~cd 可以表示字符串以 ab 开始接着跟随一个任意长度非c字符,以d结尾的字符串。

Interval

使用 <> 来匹配数字范围, 比如 foo<1-100> 可以匹配string foo90 却不能匹配 foo101

Intersection

符号 & 用来连接两个 patterns 两个正则表达式都需要匹配

Any string

符号 @ 用来匹配所有,和 Intersection 联合使用可以用来表示,匹配所有除了。

比如 @&~(foo.*) 用来匹配所有字符,除了以 foo 开头的字符

范围查询

范围查询用来查询一定范围的匹配,比如

ResponseTime: [10 TO *]

用来查询请求时间大于等于 10 ms 的,或者使用 ResponseTime: {10 TO *} 来匹配大于 10 ms 的。

方括号可以表示包括,花括号不包括,所以 [10 TO 50} 表示 需要 10<=value<50

也可以简化写成

age:(>=10 AND <50)

这样

Boolean 查询

逻辑运算 AND、OR、NOT 可以用来组合查询语句,这三个运算符必须 大写 ,更多内容可以查看 Lucene 语法。

  • + 搜索结果中必须包含此项
  • - 不能含有此项

字段名称搜索

比如需要查询 statusactive 的内容,可以

status:active

近似搜索

在短语后面加 ~ 可以搜到被隔开或者顺序不同的单词。

比如 “where select”~5, 表示 select 和 where 中间可以相隔5个单词。

reference


2017-10-29

Google+

最近文章

  • 又一款抓包分析软件 wireshark Wireshark 是一款网络分析工具,也是学习网络协议的工具,原先介绍过的 Charles ,mitmproxy 等HTTP抓包工具,都局限于 HTTP/HTTPS 请求,对于更底层的 TCP/IP,UDP 等协议就无能为力了。Wireshark 可以抓取网卡上的网络包,并实时展示,Wireshark 包括了过滤器,协议显示等等工具。
  • 关于游戏的一些想法 最近国内又火了一个答题游戏,回答正确12题平分多少多少万奖金。先不说他们都抄袭 HQ Trivia 这款App,但我这两天一直在想一个问题,为什么这一类的应用能火起来,难道就是因为最后平分100万,200万,现金带来的刺激吗?我想答案一定不是的,除了最开始的玩家或许还能分到几十块钱,在入场玩家越来越多的情况下,每个人瓜分到的奖励一定是越来越少的。那到底是什么能让一个应用一夜之间火到大江南北?
  • Android 电视盒子可用的应用备份 用盒子也已经很多年了,几年来家里,自己用,也积累了一些常用的应用。这两天又拿到了 T1 盒子,又才想起来整理这样一份单子,这样不用每一次都一遍一遍的尝试了。记得以前 VST ,泰捷视频都还很不错的时候,再后来广电发了禁令,再后来这片市场混乱发展,各家大型网站优酷,爱奇艺又不敢公开大搞,却又在背后偷偷摸摸。再到现在几乎被什么芒果,CIBN垄断,内容没什么可看,却什么都要收费。我始终抱有一个观点,如果电视盒子这一块开放发展,国内的厂家完全能够占领全世界的盒子市场,好几年前用的 Android 盒子就已经能够满足我的大部分需求,并且应用设计也早 Google 自己推出 Android TV 盒子以及规范 Android TV 应用好多年。可惜这一块市场被一道禁令打到了地下。
  • okhttp 使用 OkHttp是一个非常高效的HTTP客户端,默认情况下:
  • 斐讯 T1 盒子去除广告 斐讯投资送硬件这路子是着魔了,所以在斐讯 K2P 之后又入手了这个 T1 的盒子,配置2G RAM,16G Sdcard,配置还不错。接口有 USB,网口,HDMI 口,还有 一个 AV 输出口,日常使用是没有任何问题的,初尝试一下非常流畅,不过让我不爽的是,第一次进入竟然需要验证手机,说是 CIBN 盒子的验证,如果不注册还不让进入。