kibana查询语法
kibana简单查询语法
单项 term 查询
例: 搜 Dahlen, Malone
字段field查询
field:value
例:city:Keyport, age:26
通配符查询
“ ? ”匹配单个字符 例: H?bbs
“ * ” 匹配0到多个字符 例: H*
*注意: ? * 不能用作第一个字符,例如: ?text text
范围查询
age:[20 TO 30] age:{20 TO 30}
注:[ ] 表示端点数值包含在范围内,{ } 表示端点数值不包含在范围内
逻辑操作
AND 例子:firstname:H* AND age:20
OR 例子: firstname:H* OR age:20
" + ":搜索结果中必须包含此项
" - ":不能含有此项
例: +firstname:H* 、-age:20 、city:H*
firstname字段结果中必须存在H开头的,不能有年龄是20的,city字段H开头的可有可无
分组查询
(firstname:H* OR age:20) AND state:KS
先查询名字H开头年龄或者是20的结果,然后再与国家是KS的结合
字段分组
firstname:(+H* -He*)
搜索firstname字段里H开头的结果,并且排除firstname里He开头的结果
转义特殊字符
“+”、"-"、 && || ! () {} [] ^" ~ * ? : \
注意区分text和keyword,就可以根据具体需求做相关操作了。
ES的字符串比较规则是第一位和第一位比较,一位一位的比较下去。
字符串排序
按字符串排序时,是不希望分词之后进行排序的,应该以整个字符串整体来进行排序。
下面是kibana的Dev tool命令
GET /lib/_search
{
"query": {
"match_all": {}
}
, "sort": [
{
"content.keyword": {
"order": "desc"
}
}
]
}
注:此处字段均为字符串类型(mapping所展示的格式),对于需要排序的字段,必须使用keyword类型,才可以正确生效。
字符串范围查询
同样是利用keyword的不分词的特性,下面是kibana的Dev tool命令
GET /fptest_2019-04-03/rrr/_search
{
"query":{
"range": {
"birthday.keyword": {
"gte": "1994-01-01",
"lte": "1994-12-31",
"format": "yyyy-MM-dd"
}
}
}
}
注:range查询使用的参数:
gte:大于等于
gt:大于
lte:小于等于
lt:小于
其他可参考elasticsearch官方教程:字段示例
上一篇: PyTorch实现逻辑回归模型