创建文档

  1. PUT /ecommerce/product/1
  2. {
  3. "name":"jiaqiangban gaolujie yagao",
  4. "desc":"gaoxiao meibai",
  5. "price": 30,
  6. "produer":"gaolujie producer",
  7. "tags":["meibai", "fangzhu"]
  8. }

查看文档

GET /ecommerce/product/1

修改文档

POST /ecommerce/product/1
{
  "price":50
}

替换文档

与插入语法相同,只要id相同即会覆盖,为空字段也会进行覆盖。例如下面例子中tags字段为空,而原来的文档中包含tags字段,那么替换后文档中tags字段为空

PUT /ecommerce/product/1
{
  "name":"jiaqiangban gaolujie yagao",
  "desc":"gaoxiao meibai",
  "price": 30,
  "produer":"gaolujie producer"
}

删除文档

DELETE /ecommerce/product/1

query string search

GET /ecommerce/product/_search

query DSL

全量查询

GET /ecommerce/product/_search
{
  "query": {
    "match_all": {}
  }
}

匹配+排序

GET /ecommerce/product/_search
{
  "query": {
    "match": {
      "name": "yagao"
    }
  },
  "sort": [
    {
      "price": "desc"
    }
  ]
}

GET es_product/_search
{
  "query": {
    "match": {
      "name": {
        "query": "zhonghua yagao",
        "operator": "and"
      }
    }
  }
}

分页

GET /ecommerce/product/_search
{
  "from": 0, 
  "size": 1, 
  "query": {
    "match_all": {}
  }
}

指定返回字段

支持通配符_source:[“name*”]

GET /ecommerce/product/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["name","price"]
}

脚本字段

GET .kibana_1/_search
{
  "script_fields": {
    "new_field": {
      "script": {
        "lang": "painless",
        "source": "doc['type'].value + '-hello'"
      }
    }
  },
  "query": {
    "match_all": {}
  }
}

短语搜索

GET es_product/_search
{
  "query": {
    "match_phrase": {
      "name": "zhonghua yagao"
    }
  }
}
GET es_product/_search
{
  "query": {
    "match_phrase": {
      "name": {
        "query": "zhonghua yagao",
        "slop": 1
      }
    }
  }
}

query filter

GET /ecommerce/product/_search
{
  "query": {
    "bool": {
      "must":{
        "match":{
          "name":"yagao"
        }
      },
      "filter": {
        "range": {
          "price": {
            "gt": 25
          }
        }
      }
    }
  }
}

full-text search

GET /ecommerce/product/_search
{
  "query": {
    "match": {
      "producer": "zhonghua producer"
    }
  }
}

phrase search

GET /ecommerce/product/_search
{
  "query": {
    "match_phrase": {
      "producer": "zhonghua producer"
    }
  }
}

highlight search

GET /ecommerce/product/_search
{
  "query": {
    "match_phrase": {
      "producer": "zhonghua producer"
    }
  },
  "highlight": {
    "fields": {
      "producer":{}
    }
  }
}

求和

GET /ecommerce/product/_search
{
  "size": 0, 
  "aggs": {
    "group_by_tag": {
      "terms": {
        "field": "tags"
      }
    }
  }
}

匹配后求和

GET /ecommerce/product/_search
{
  "size": 0, 
  "query": {
    "match": {
      "name": "yagao"
    }
  },
  "aggs": {
    "group_by_tag": {
      "terms": {
        "field": "tags"
      }
    }
  }
}

分组后求平均值

GET /ecommerce/product/_search
{
  "size": 0,
  "aggs": {
    "group_by_tag": {
      "terms": {
        "field": "tags"
      },
      "aggs":{
        "avg_price": {
          "avg":{
            "field": "price"
          }
        }
      }
    }
  }
}

分组后求平均再排序

GET /ecommerce/product/_search
{
  "size": 0,
  "aggs": {
    "group_by_tag": {
      "terms": {
        "field": "tags",
        "order": {
          "avg_price": "asc"
        }
      },
      "aggs":{
        "avg_price": {
          "avg":{
            "field": "price"
          }
        }
      }
    }
  }
}

指定范围分组后再分组最后求平均

GET /ecommerce/product/_search
{
  "size": 0, 
  "aggs": {
    "group_by_range_price": {
      "range": {
        "field": "price",
        "ranges": [
          {
            "from": 20,
            "to": 30
          },
          {
            "from": 30,
            "to": 40
          },
          {
            "from": 50,
            "to": 60
          }
        ]
      },
      "aggs": {
        "group_by_tag": {
          "terms": {
            "field": "tags"
          },
          "aggs": {
            "avg_price": {
              "avg": {
                "field": "price"
              }
            }
          }
        }
      }
    }
  }
}