2 Lucene 语法查询
2.1 简易查询
若是查询的时候没有明确查询的字段,会默认为 _all
字段,也就是全文查询。也能够指定一个字段,又称为 field
来查询。ja
# 全文查询 Exception
Exception
# 指定查询字段 message 里的 Exception
message: Exception
# 查询短语
message: "java.lang.NullPointerException" # 任何 message 字段都包含 Exception message\*: Exception # 通配符的使用,? 代替单个字符,* 代替零个或者多个字符 message: Exceptio* # 正则表达式经过使用 / 包围,能够植入到查询的字符串中 message: /Ex?(cep[tion])/ # 另外一个正则的使用,匹配的含义是「两位非abc的任意字符」 info.recallId: /[^abc]{2}/
2.2 多字段查询
能够经过一些布尔操做符来使用,若是查询中没有任意的操做符号,那么默认使用 OR 操做符。
# 支持 AND, OR, NOT,也能够写成&&, ||, !操做符
message: ((Exception AND Error) OR (Error AND Exception) OR Error) AND NOT Exception # 包含 lucene 但不包含 elasticsearch lucene NOT elasticsearch # + 必须包含,其余无关紧要,lucene 必须包含,apache 无关紧要... +lucene apache # 不能出现的操做符号"-",包含了 lucence,但不包含 apache... +lucene-apache
2.5 模糊查询
使用"~”字符以及一个紧随其后的整数值,当使用该修饰符修饰一个词项的时候,意味着咱们想搜索那些包含该此项近词项的文档。"~"字符后的整数值肯定了近似词项与原始词项的最大编辑距离。
# mastering book Elasticsearch 也会被认为匹配
title: "mastering Elasticsearch"~2