在kibana搜索的时候,可以简单的使用 Lucene通用的语法,或者使用基于JSON格式QueryDSL(DSL:领域特定语言)来构造搜索各种请求(更加灵活,方便构造复杂查询)。
ElasticSearch 的各种语法,我还算熟悉的,但是在kibana这个强大的图表系统里面,居然迷失自我了 。
Lucene提供了方便您创建自建查询的API,也通过QueryParser提供了强大的查询语言。
本文讲述Lucene的查询语句解析器支持的语法,Lucene的查询语句解析器是使用JavaCC工具生成的词法解析器,它将查询字串解析为Lucene Query对象。
项(Term)
一条搜索语句被拆分为一些项(term)和操作符(operator)。项有两种类型:单独项和短语。
单独项就是一个单独的单词,例如”test” , “hello”。
短语是一组被双引号包围的单词,例如”hello dolly”。
多个项可以用布尔操作符连接起来形成复杂的查询语句(AND OR )。
域(Field)
Lucene支持域。您可以指定在某一个域中搜索,或者就使用默认域。域名及默认域是具体索引器实现决定的。kibana的默认域就是message …. message会包含你所有日志,包括你grok过滤之后的。
他的搜索语法是: 域名+”:”+搜索的项名。
举个例子,假设某一个Lucene索引包含两个域,title和text,text是默认域。如果您想查找标题为”The Right Way”且含有”don’t go this way”的文章,您可以输入:
title:”The Right Way” AND text:go
或者
title:”Do it right” AND right
因为text是默认域,所以这个域名可以不行。
注意:域名只对紧接于其后的项生效,所以
title:Do it right
只有”Do”属于title域。”it”和”right”仍将在默认域中搜索(这里是text域)。
项修饰符(Term Modifiers)
Lucene支持项修饰符以支持更宽范围的搜索选项。
kibana默认就是lucene搜索的,一些模糊搜索是可以用通配符,Lucene支持单个与多个字符的通配搜索。
使用符号”?”表示单个任意字符的通配。
使用符号”*”表示多个任意字符的通配。
单个任意字符匹配的是所有可能单个字符。例如,搜索”text或者”test”,可以这样:
te?t
多个任意字符匹配的是0个及更多个可能字符。例如,搜索test, tests 或者 tester,可以这样:
test*
您也可以在字符窜中间使用多个任意字符通配符。
te*t
注意:您不能在搜索的项开始使用*或者?符号。
范围查询
有一些需求是range的范围类型的,
mod_date:[20020101 TO 20030101]
- 1
模糊查询
Lucene支持基于Levenshtein Distance与Edit Distance算法的模糊搜索。要使用模糊搜索只需要在单独项的最后加上符号”~”。例如搜索拼写类似于”roam”的项这样写:
roam~
这次搜索将找到形如foam和roams的单词。
注意:使用模糊查询将自动得到增量因子(boost factor)为0.2的搜索结果.
邻近搜索(Proximity Searches)
Lucene还支持查找相隔一定距离的单词。邻近搜索是在短语最后加上符号”~”。例如在文档中搜索相隔10个单词的”apache”和”jakarta”,这样写:
“jakarta apache”~10
Boosting a Term
Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, “^”, symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.
Lucene可以设置在搜索时匹配项的相似度。在项的最后加上符号”^”紧接一个数字(增量值),表示搜索时的相似度。增量值越高,搜索到的项相关度越好。
Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for jakarta apache and you want the term “jakarta” to be more relevant boost it using the ^ symbol along with the boost factor next to the term. You would type:
通过增量一个项可以控制搜索文档时的相关度。例如如果您要搜索jakarta apache,同时您想让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,也就是您输入:
jakarta^4 apache
This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:
这将使得生成的doucment尽可能与jakarta相关度高。您也可以增量短语,象以下这个例子一样:
“jakarta apache”^4 “jakarta lucene”
By default, the boost factor is 1. Although, the boost factor must be positive, it can be less than 1 (i.e. .2)
默认情况下,增量值是1。增量值也可以小于1(例如0.2),但必须是有效的。
布尔操作符
布尔操作符可将项通过逻辑操作连接起来。Lucene支持AND, “+”, OR, NOT 和 “-”这些操作符。(注意:布尔操作符必须全部大写)
OR
OR操作符是默认的连接操作符。这意味着如果两个项之间没有布尔操作符,就是使用OR操作符。OR操作符连接两个项,意味着查找含有任意项的文档。这与集合并运算相同。符号||可以代替符号OR。
搜索含有”xiaorui.cc apache” 或者 “xiaorui.cc”的文档,可以使用这样的查询:
“jakarta apache” jakarta
"xiaorui.cc apache" xiaorui.cc
或者
"xiaorui.cc apache" OR xiaorui.cc
- 1
- 2
- 3
一定要搞明白 xiaorui.cc haproxy 是每条数据,这要匹配一个也算匹配到得。 这很容易让人误会以为是 AND的效果。
AND
AND操作符匹配的是两项同时出现的文档。这个与集合交操作相等。符号&&可以代替符号AND。
搜索同时含有”jakarta apache” 与 “jakarta lucene”的文档,使用查询:
"jakarta apache" AND "jakarta lucene"
- 1
+
“+”操作符或者称为存在操作符,要求符号”+”后的项必须在文档相应的域中存在。
搜索必须含有”jakarta”,可能含有”lucene”的文档,使用查询:
+jakarta apache
他其实跟AND 是有些像的,直接在lucene query ==》 A B的话,意思是 A 或者B的。 这有些蛋疼… …
NOT
NOT操作符排除那些含有NOT符号后面项的文档。这和集合的差运算相同。符号!可以代替符号NOT。
搜索含有”jakarta apache”,但是不含有”jakarta lucene”的文档,使用查询:
“jakarta apache” NOT “jakarta lucene”
注意:NOT操作符不能单独与项使用构成查询。例如,以下的查询查不到任何结果:
NOT “jakarta apache”
-
“-”操作符或者禁止操作符排除含有”-”后面的相似项的文档。
搜索含有”jakarta apache”,但不是”jakarta lucene”,使用查询:
“jakarta apache” -”jakarta lucene”
分组(Grouping)
Lucene支持使用圆括号来组合字句形成子查询。这对于想控制查询布尔逻辑的人十分有用。
搜索含有”jakarta”或者”apache”,同时含有”website”的文档,使用查询:
(jakarta OR apache) AND website
这样就消除了歧义,保证website必须存在,jakarta和apache中之一也存在。
转义特殊字符(Escaping Special Characters)
Lucene支持转义特殊字符,因为特殊字符是查询语法用到的。现在,特殊字符包括
+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \
转义特殊字符只需在字符前加上符号,例如搜索(1+1):2,使用查询
(1+1):2
相关推荐
11. **翻译**:谷歌搜索也能快速翻译单词或短语,如 "translate 西班牙语 to 英语"。 12. **单位转换**:"convert" 关键词可以进行简单的单位转换,如 "convert 16 oz to lbs"。 以上是谷歌搜索的一些高级技巧,...
- **Laravel Scout**: 提供全文搜索功能,可以集成Elasticsearch或Algolia等搜索引擎。 - **Laravel Horizon**: 提供了队列监控和管理的UI界面。 - **Laravel Passport**: 提供OAuth2服务器,支持API的认证和授权。 ...
同样,可以从此存储库下载zip文件,并根据操作系统将其解压缩到QGIS plugins文件夹中。 对于QGIS 2.18。*: Windows: c:\ Users \用户名\ .qgis2 \ python \插件Mac: /Users/username/.qgis2/python/
该网页显示一个自动完成输入( ),以搜索该卡的拉丁美洲西班牙文名称。 选择后,它还将以目标语言显示所选卡的名称。 在线使用: 只需转到 构建(自行更新到最新的HearthstoneJSON) 安装,在克隆项目的文件夹中...
语态搜索支持英,德意大利,西班牙,法,俄,乌克兰,白俄罗斯,捷克,丹麦,荷兰,希腊葡萄牙,波兰,保加利亚和瑞典语. 多达18种语态分析模块. 服务器模式和远程访问 服务器模式让你可以使用任何浏览器(如,IE)远程搜索并远程...
Music2pc v2.14 是一款国外的MP3音乐下载搜索工具,专为寻找英文、法语、俄语、西班牙语、德语以及北欧等国家和地区的音乐资源而设计。这款软件以其多语言搜索功能,使得用户能够便捷地探索全球各地的音乐作品,特别...
在WeatherAjaxSpain项目中,AJAX被用来实现用户在搜索框输入西班牙地点后,无需刷新页面就能获取实时天气和其他详细信息的功能。 【搜索引擎设计】 搜索引擎通常包括以下几个关键组成部分: 1. 搜索框:用户输入...
EPG在IPTV中起到了类似传统电视节目单的作用,帮助用户了解当前和未来时段有哪些电视节目,并可以进行预约、录制或者快进快退等操作。 EPG的数据通常由电视台或者内容提供商提供,包含节目的名称、时间、频道、简介...
本教程将指导您如何在Android Studio中切换至西班牙语界面,以便于理解和操作。 首先,打开Android Studio。在主菜单中,找到“File”(文件)选项,然后点击“Settings”(设置)。在Windows或Linux系统中,这个...
这个怎么运作加载eBay法国,意大利或西班牙的页面时(或其内容通过Ajax更改),扩展名将搜索翻译的内容并将其替换为原始数据(可在DOM的自定义属性中找到)。 这是通过JavaScript操作完成的。 它已在以下页面中进行...
例如,更改拨号连接属性、添加西班牙文输入法、设置Internet Explorer的内容审查、创建和管理文件夹结构、修改文件属性、删除文件、显示隐藏文件以及搜索和创建快捷方式等。 这些知识点构成了计算机应用基础的基本...
Objective-C是苹果公司为其操作系统,包括iOS和macOS,设计的一种面向对象的编程语言,具有C语言的基础语法并扩展了Smalltalk式的消息传递机制。对于iOS开发者而言,熟悉Objective-C意味着能够更好地理解和修改...
综上所述,这个压缩包包含了一个用于JupyterLab的西班牙语语言包,它可以帮助西班牙语用户更好地理解和操作JupyterLab环境。同时,由于与Elasticsearch和大数据相关的标签,我们可以推测这个环境可能被用于进行高级...
不同于操作系统自带的简单文件搜索,FileLocator Pro支持多种搜索模式,包括全文搜索、正则表达式、二进制匹配等,能够深入文件内容进行精准查找,而不仅仅是依赖文件名。这尤其适用于那些需要在大量文档中查找特定...
这样的分类方式有助于用户快速找到他们需要的特定功能代码,节省了在大量代码库中搜索的时间。"in spanish"则意味着所有的注释、变量名和函数命名都是用西班牙语写的,对于西班牙语使用者来说,这将极大地提高阅读和...
这个脚本简化了从 subdivx.com 下载字幕的过程,使得用户无需手动操作,极大地提升了效率。 首先,我们需要了解Python编程语言。Python 是一种高级、解释型、交互式和面向对象的脚本语言,因其简洁明了的语法而广受...
而SEO优化则要求合理构建URL结构,使用meta标签等技术提升搜索引擎可见性。 总结来说,"Project-Jas-TV"是一个以Ruby on Rails和jQuery为基础的电视节目时间表项目,它展示了如何运用这些技术构建一个功能齐全、...
这通常涉及到字符串操作、正则表达式以及数据处理库,如Pandas。 5. **文件命名规范**:“es_categories-master”这个文件名可能遵循Git仓库的命名规则,其中“master”通常表示主分支,表明这是一个开源项目,并且...
4. 搜索与检索:强大的搜索功能,允许用户根据书名、作者、ISBN号等多条件进行快速查找。 5. 报表与统计:生成各类报表,如借阅统计、逾期图书报告,帮助管理层了解图书馆运营情况。 6. 用户管理:管理读者信息,...
对于更符合人体工程学的操作,您可以简单地在浏览器的搜索栏中使用关键字“mlw”,按空格并输入搜索条件,在这种情况下,您甚至可以隐藏分机的按钮,为其他分机释放一些空间。使用选项页面启用或禁用45种可用的不同...