查所有的索引
GET _cat/indices
match
单字段匹配,会对字段分词
例如:查姓名中包含“Butler”的订单:
名字“Gwen Butler” 会被拆分为“Gwen” 和 “Butler” 进行匹配
POST kibana_sample_data_ecommerce/_search
{
"query":{
"match": {
"customer_full_name": "Butler"
}
}
}
match_phrase
短语查询, 短语中的内容是精确匹配
例如:查姓名中包含“Gwen Butler”的订单:
POST kibana_sample_data_ecommerce/_search
{
"query":{
"match_phrase": {
"customer_full_name": "Gwen Butler"
}
}
}
match_phrase
多字段查询,
例如:查姓名中包含“Gwen”, 性别为女的订单:
POST kibana_sample_data_ecommerce/_search
{
"query":{
"multi_match": {
"query": "Gwen FEMALE",
"fields": ["customer_full_name", "customer_gender"]
}
}
}
fuzzy
模糊查询, 与match不同,不分词。能够对拼写错误的进行匹配
例如:查姓名中包含“Gwen”的订单, 但是搜索的时候写错成“Gwex” 也能查出来
"fuzziness": 2 ,允许错2个字符
POST kibana_sample_data_ecommerce/_search
{
"query":{
"fuzzy": {
"customer_full_name": {
"value": "Gwex",
"fuzziness": 2
}
}
}
}
wildcard
通配符查询,
例如:查姓名中包含“Gwe”的订单
POST kibana_sample_data_ecommerce/_search
{
"query":{
"wildcard": {
"customer_full_name": "*Gwe*"
}
}
}
filter
过滤, 不参与算分
例如:按下单时间过滤
POST kibana_sample_data_ecommerce/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"customer_full_name": "Butler"
}
}
],
"filter": [
{"range": {
"order_date": {
"gte": "2021-11-20",
"lte": "2023-11-20"
}
}}
]
}
}
}
嵌套对象
例如:查指定sku的订单
POST kibana_sample_data_ecommerce/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"products.sku": "ZO0374603746"
}
}
]
}
}
}
聚合
aggs
例如:先按性别分组,再统计每种性别订单的平均金额
POST kibana_sample_data_ecommerce/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"day_of_week": "Sunday"
}
}
]
}
},
"aggs": {
"gender_aggs": {
"terms": {
"field": "customer_gender",
"size": 10
},
"aggs": {
"avgprice_aggs": {
"avg": {
"field": "taxful_total_price"
}
}
}
}
}
}