Lucene查询

Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询。

下面着重介绍下Lucene支持的查询:

Terms词语查询

词语搜索,支持 单词 和 语句。

  • 单词,例如:"test","hello"
  • 语句,例如:"hello,world!"

多个词语可以通过操作符,连接成更复杂的搜索逻辑。

Field字段查询

Lucene支持针对某个字段进行搜索,语法如:

title:hello
或者
title:"hello title"

搜索语句时需要加上双引号,否则:

title:hello title
就意味着,搜索title为hello,或者包含title关键字的文档

Term Modifier修饰符查询

Lucene支持对词语增加修饰,从而扩大查询的范围。

WildCard Searches通配符查询

支持在单个单词或者语句中添加通配符:

  • ?匹配单个字符
  • *匹配0个或多个字符

例如:

=>想要搜索test或者text

te?t

=>想要搜索test  tests  tester

test*

文档中不支持通配符放在搜索的开头,如*test,但是在kibana中是支持这种搜索语法的。

Fuzzy Searches模糊词查询

支持搜索模糊词,如果想要搜索模糊词,需要在词语后面加上符号~

例如:

=>想要搜索和test相近的词

test~

可以搜索出text或者tests等词

也支持在~后面添加模糊系数,模糊系数[0-1],越靠近1表示越相近,默认模糊系数为0.5。

test~0.8

Proximity Searches邻近词查询

前面的模糊词只是针对某个单词,在语句间也存在模糊搜索的概念,只不过不是单词的模糊,而是单词之间内容的模糊。

注意要使用双引号`""`包围

例如:

=>想要搜索包含"hello""world"的文档,这两个单词中间可以有一部分内容(这部分内容通过字符个数限制)

"hello world"~10

可以匹配"hello 123 world"
或者"hello,Tom,world"

Range Searches范围查询

支持范围搜索,可以指定最小值和最大值,会自动查找在这之间的文档。如果是单词,则会按照字典顺序搜索。

  • {}尖括号表示不包含最小值和最大值,可以单独使用
  • []方括号表示包含最小值和最大值,可以单独使用

例如:

=>搜索成绩grade字段小于等于80分,大于60分的

grade:{60,80]

=>搜索名字在A和C之间的

name:{A,C}

返回,bone、baby、barry

Boosting a Term词语相关度查询

如果单词的匹配度很高,一个文档中或者一个字段中可以匹配多次,那么可以提升该词的相关度。使用符号^提高相关度。

例如:

=>提高jarkarta的比重
jakarta apache

可以采用下面的语法:

jakarta^4 apache

Boolean Operator布尔操作符

支持多种操作符:

AND

AND操作符用于连接两个搜索条件,仅当两个搜索条件都满足时,才认为匹配。通常用来做交集操作。也可以使用&&替换。

注意必须使用大写。如果不使用AND,而是and,可能会被单做关键词进行搜索!

例如:

=> 搜索同时包含tom和john的文档

tom AND john
或者
tom && john

OR

OR操作符用于连接两个搜索条件,当其中一个条件满足时,就认为匹配。通常用来做并集操作。也可以使用||替换。

注意必须使用大写。

例如:

=>搜索包含tom或者john的文档

tom OR john
或者
tom || john

NOT

NOT操作符排除某个搜索条件。通常用来做差集操作也可以使用!替换。

注意必须大写。

例如:

=>搜索包含tom,不包含john的文档

tom NOT john
或者
tom && !john

在kibana中支持单独使用,如:

=>排除包含test的文档

NOT test

+

包含该操作符后跟着的搜索条件,如:

=>搜索包含tom的文档

+tom

作用于AND的差不多,但是支持单独使用

-

排除该操作符后跟着的搜索条件,如:

=>搜索不包含tom的文档

-tom

效果类似NOT

Grouping分组

支持使用小括号对每个子句进行分组,形成更为复杂的查询逻辑。

例如:

=>要搜索包含hello的文档中,也包含tom或者john的

hello AND (tom OR john)

也支持在字段中使用小括号:

=>要搜索标题中,既包含return 也包含pink panther的

title:(+return +"pink panther")

Escaping Special Character转义字符

由于Lucene中支持很多的符号,如

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

因此如果需要搜索 (1+1):2 需要对改串进行转换,使用字符\

\(1\+1\)\:2

elk不同之处

对与范围查询:
lucene :{A,C} 而elk则:{A TO B}
例如:elk的一个查询:
@timestamp:{"now-10m"  TO  "now"} AND  message : "come in ActivityCommonService_pz"  &&  (1517391575588 OR 1112796)     +\[5.23.0\]  AND @version:[0 TO 2]


转载:https://www.cnblogs.com/xing901022/p/4974977.html

kibana使用(ELK)、Lucene 查询语法的更多相关文章

  1. ELK:kibana使用的lucene查询语法【转载】

    kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 全文搜索 在搜索栏输入login,会返回所有字段值中包含login的文档 使 ...

  2. ELK:kibana使用的lucene查询语法

    kibana在ELK阵营中用来查询展示数据elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 kibana4官方演示页面 全文搜索 在搜索栏输入login,会返回所有字段值 ...

  3. kibana使用的lucene查询语法

    kibana在ELK阵营中用来查询展示数据elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 kibana4官方演示页面 全文搜索 在搜索栏输入login,会返回所有字段值 ...

  4. Lucene查询语法详解

    Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询. 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 ...

  5. query_string查询支持全部的Apache Lucene查询语法 低频词划分依据 模糊查询 Disjunction Max

    3.3 基本查询3.3.1词条查询 词条查询是未经分析的,要跟索引文档中的词条完全匹配注意:在输入数据中,title字段含有Crime and Punishment,但我们使用小写开头的crime来搜 ...

  6. Lucene查询语法汇总

    目录 一.单词查询 二.通配符查询 三.模糊查询 四.近似查询 五.范围查询 六.优先级查询 七.逻辑操作 八.括号分组 九.转义特殊字符 Lucene是目前最为流行的开源全文搜索引擎工具包,提供了完 ...

  7. lucene查询语法简介

    为什么要介绍lucene:我们在ELK中搜索相关日志的时候,搜索语言需要遵循Lucene才可以匹配到需要的信息 什么是Lucene:Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件 ...

  8. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  9. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser 2014-06-25 14:25 722人阅读 评论(1) 收藏

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

随机推荐

  1. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第7节: 获取异线程释放的对象

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第七节: 获取异线程释放的对象 上一小节分析了异线程回收对象, 原理是通过与stack关联的WeakOrder ...

  2. 学习笔记 | Set

    目录 Set Set 前言 不会数据结构选手 当几乎没写过什么数据结构的菜鸡遇上了毒瘤的splay和treap 时间正一点一点地被续走TAT 听说set有时候可以替代treap和splay 那么菜鸡L ...

  3. Kaggle 广告转化率预测比赛小结

    20天的时间参加了Kaggle的 Avito Demand Prediction Challenged ,第一次参加,成绩离奖牌一步之遥,感谢各位队友,学到的东西远比成绩要丰硕得多.作为新手,希望每记 ...

  4. word2vec的理解

    在学习LSTM的时候,了解了word2vec,简单的理解就是把词变成向量.看了很多书,也搜索了很多博客,大多数都是在word2vec的实现原理.数学公式,和一堆怎么样重新写一个word2vec的pyt ...

  5. 使用FFMPEG 压缩png图片 与tinypng压缩结果对比

    Tinypng  https://tinypng.com/ 一个在线png压缩工具 FFmpeg https://ffmpeg.org/download.html 原图 903 kb Tinypng压 ...

  6. 团队博客作业Week3 --- 项目选择&&需求疑问

    项目选择 经过团队内所有成员一致探讨,我们团队选择完善和改进之学霸系统的第二个子模块,即:网站内容结构定义和数据处理.具体的要求如下:(摘自Xueba系统项目需求) 网站内容结构定义和数据处理(Con ...

  7. User survey(用户调研)

    郑文武——小学二年级学生 姓名 郑文武  性别.年龄 男.9岁                      职业 学生 收入 父母给的零花钱 知识层次和能力 会使用手机 生活/工作情况 努力学习但数学成 ...

  8. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (一) 配置与测试

    引脚连接说明 与树莓派的连线 NRF24L01 => 树莓派 GND          =>   GND VCC          =>    3.3V CE           = ...

  9. debug阶段贡献分

    组名: 新蜂 组长: 武志远 组员: 宫成荣 谢孝淼 杨柳 李峤 项目名称: java俄罗斯方块NEO 发布时间:11.29 武志远 武志远 武志远 武志远 武志远 宫成荣 宫成荣 杨柳 宫成荣 宫成 ...

  10. node path模块

    一.在nodejs中path模块时使用频率很高的模块,其中不乏有很多API写得很模糊,但仔细琢磨下来,也不是很难理解. 1.获取文件所在路径 var path = require('path'); v ...