美文网首页
Lucene查询语法

Lucene查询语法

作者: 我才不是大神 | 来源:发表于2019-06-11 19:05 被阅读0次

Terms(项)词语查询

一条搜索语句被拆分成一些项(term)和操作符(operator)

项存在两种类型:单词语句

  • 单词,例如:“hello”,"world"
  • 语句,例如:"hello,world"

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

Field(域)字段查询

Lucene支持域,可以指定某一个域进行搜索,kibana默认域是message。


alt
alt

Lucene可以针对某个字段进行搜索,如:

message:我
或
message:"我很帅"

注:搜索语句需要加上双引号

Term Modifiers(项修饰符)修饰符查询

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

WildCard Searches通配符查询

在单词或语句中添加通配符:

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

例如:

想要搜索test或text
te?t

想要搜索test、tests和tester
test*

kibana支持通配符放在搜索前,如 *test。

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

相关文章

  • Lucene查询语法

    Terms(项)词语查询 一条搜索语句被拆分成一些项(term)和操作符(operator) 项存在两种类型:单词...

  • Lucene查询语法

    1.Lucene语法简介 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代...

  • Lucene/kibana查询 语法

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

  • 07_Lucene搜索

    搜索 对要搜索的信息创建Query查询对象,Lucene会根据Query查询对象生成最终的查询语法,类似关系数据库...

  • ELK常用搜索命令

    kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Luce...

  • ELK:kibana使用的lucene查询语法

    kibana在ELK阵营中用来查询展示数据elasticsearch构建在Lucene之上,过滤器语法和Lucen...

  • Lucene--搜索

    Lucene--搜索 一、创建查询对象的方式 对要搜索的信息创建Query查询对象,Lucene会根据Query查...

  • Lucene 查询原理(一)

    查询原理(一) 从本篇文章开始介绍Lucene查询阶段的内容,由于Lucene提供了几十种不同方式的查询,但其核心...

  • ES笔记

    1. es 封装内部 lucene jar 包,基于 lucene API 进行检索查询 2. ElasticSe...

  • Lucene 查询原理

    前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统Elasticsearch和so...

网友评论

      本文标题:Lucene查询语法

      本文链接:https://www.haomeiwen.com/subject/kodcfctx.html