全文检索ElasticSearch的简单使用笔记

工具:kibana

GET _search
{
  "query": {
    "match_all": {}
  }
}

#创建索引结构
PUT sku
{
  "mappings":{
    "doc":{
      "properties":{
        "name":{
          "type":"text",
          "analyzer":"ik_smart"
        },
        "price":{
          "type":"integer"
        },
        "image":{
          "type":"text"
        },
        "createTime":{
          "type":"date"
        },
        "spuId":{
          "type":"keyword"
        },
        "categoryName":{
          "type":"keyword"
        },
        "brandName":{
          "type":"keyword"
        },
        "spec":{
          "type":"object"
        },
        "saleNum":{
          "type":"integer"
        },
        "commentNum":{
          "type":"integer"
        }
      }
    }
  }
}
#插入文档 id 自动生成

POST sku/doc
{
  "name":"小米手机11",
  "price":400000,
  "spuId":"101",
  "createTime":"2019-01-10",
  "categoryName":"手机",
  "brandName":"小米",
  "saleNum":110214,
  "commentNum":15002,
  "spec":{
    "网络制式":"移动5G",
    "屏幕尺寸":"6.0"
  }
}
# id为1
PUT sku/doc/1
{
  "name":"小米手机",
  "price":200000,
  "spuId":"101",
  "createTime":"2019-11-10",
  "categoryName":"手机",
  "brandName":"小米",
  "saleNum":1022,
  "commentNum":15500,
  "spec":{
    "网络制式":"移动5G",
    "屏幕尺寸":"6.0"
  }
}
#查询所有数据
GET sku/_search

#匹配查询数据
GET sku/_search
{
  "query": {
    "match_all": {}
  }
}

#匹配查询数据
GET sku/_search
{
  "query": {
    "match": {
      "name":"小米电视"
    }
  }
}

#精确查询数据
GET sku/_search
{
  "query": {
    "match": {
      "name": {
         "query":"小米电视",
      "operator":"and"
      }
    }
  }
}

#多字段查询包含在"name","categoryName","brandName"字段的 小米  
GET sku/_search
{
  "query":{
   "multi_match":{
    "query":"小米",
    "fields":["name","categoryName","brandName"]
   }
  }
}

#词条匹配  查询价格=200000
GET sku/_search
{
  "query": {
    "term": {
      "price": {
        "value": "200000"
      }
    }
  }
}

#多词条匹配  查询价格=200000  
GET sku/_search
{
  "query": {
    "terms": {
      "price":[200000,100000]
    }
  }
}

#布尔组合查询  查询名称包含手机的,并且品牌为小米的。
GET sku/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {"name": "手机"}},
        {"term": {"brandName": "小米"}}
      ]
    }
  }
}

#:查询名称包含手机的,或者品牌为小米的. 满足任意一个就可以

GET sku/_search
{
  "query": {
    "bool": {
      "should": [
        {"match": {"name": "手机"}},
        {"term": {"brandName": "小米"}}
      ]
    }
  }
}

# 过滤查询 过滤品牌为小米的记录
# 过滤是针对搜索的结果进行过滤,过滤器主要判断的是文档是否匹配,不去计算和判断文档的匹配度得分所以过滤器性能比查询要高,且方便缓存,推荐尽量使用过滤 器去实现查询或者过滤器和查询共同使用。
GET sku/_search
{
  "query": {
    "bool": {
      "filter": [
        {"match":{"brandName":"小米"}}
      ]
    }
  }
}

#分组查询 一个结果集
#示例:按分组名称聚合查询,统计每个分组的数量
GET sku/_search
{
  "size":0,
  "aggs": {
    "sku_category": {
      "terms": {
        "field": "categoryName"
      }
    }
  }
}
#分组 多个结果集
# 按照 分类查询统计  和按照品牌查询统计
#"size":0, 不显示 "hits" : [] 里面的数据
GET sku/_search
{
  "size":0,
  "aggs": {
    "sku_category": {
      "terms": {
        "field": "categoryName"
      }
    },
    "sku_brand按照品牌查询分组": {
      "terms": {
        "field": "brandName"
      }
    }
  }
}

猜你喜欢

转载自www.cnblogs.com/july7/p/12178374.html