• 全文检索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"
          }
        }
      }
    }
  • 相关阅读:
    Undo/Redo实现
    [CruiseControl]binary安装和启动
    perl读写文件和命令行解析
    C++跨平台IDE之CodeBlocks
    Swig实现多语言接口
    让人梦萦的西安小吃(转载)
    推荐:Visual Basic.NET Windows Forms 编程
    健康生活16个健康习惯
    推荐一个ASP的内容管理框架(ASP Nuke)
    《企业应用架构模式》读书笔记(1)
  • 原文地址:https://www.cnblogs.com/july7/p/12178374.html
Copyright © 2020-2023  润新知