查看集群健康值
GET _cat/health?v
查看 node 信息
GET _nodes
查看索引信息
GET _cat/indices?v
创建索引
PUT /test?pretty
删除索引
DELETE /test?pretty
新建文档并建立索引
创建一个index为 ecommerce 的索引
PUT /ecommerce/_doc/1
{
  "product_id":1234,
  "product_name": "南极人",
  "price":99.9,
  "color":"Red",
  "tags":["轻松","舒服"]
}
PUT /ecommerce/_doc/2
{
 "product_id":5678,
  "product_name": "寓美",
  "price":199.9,
  "color":"White",
  "tags":["透气","实惠"]
}
PUT /ecommerce/_doc/3
{
  "product_id":23333,
  "product_name": "金利来",
  "price":1899.9,
  "color":"Blue",
  "tags":["奢侈","豪华"]
}
PUT /ecommerce/_doc/4
{
  "product_id":4444,
  "product_name": "南极人上衣",
  "price":19.9,
  "color":"Yellow",
  "tags":["保暖","豪华"]
}
查询操作
GET /ecommerce/_doc/1
更新操作方式1
PUT /ecommerce/_doc/1
{
  "product_id":1234,
  "product_name":"南极人裤子",
  "price":99.9,
  "color":"Red",
  "tags":["保暖","舒服"]
}
更新操作方式2
POST /ecommerce/_update/1
{
  "doc": {
    "product_id": 1234
  }
}
删除操作
DELETE /ecommerce/_doc/1
DSL 查询
GET _search
{
  "query": {
    "match_all": {}
  },
  "timeout": "1ms"
}
查询并按价格排序
GET /ecommerce/_search
{
  "query": {
    "match": {
      "product_name": "南极人"
    }
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}
指定返回的 field
GET /ecommerce/_search
{
  "query": {
    "match_all": {}
  },
  "_source":["product_id","product_name"]
}
分页查询 从 0 开始,每页一个
GET /ecommerce/_search
{
  "query": {"match_all": {}},
  "from": 0,
  "size": 1
}
query filter
# https://www.elastic.co/guide/en/elasticsearch/reference/7.0/query-filter-context.html
GET /ecommerce/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "product_name": "南极人"
          }
        }
      ],
      "filter": {"range": {
        "price": {
          "gte": 20,
          "lte": 100
        }
      }}
    }
  }
}
全文检索
只要 field 中有就返回
GET /ecommerce/_search
{
  "query": {
    "match": {
      "product_name": "南极人"
    }
  }
}
highlight
GET /ecommerce/_search
{
  "query": {
    "match": {
      "product_name": "南极人"
    }
  },
  "highlight": {
    "fields": {
      "product_name":{}
    }
  }
}
fuzziness 模糊查询
先用全文检索
GET /ecommerce/_search
{
  "query": {
    "match": {
      "product_name": "南极人上衣"
    }
  }
}
开启模糊查询
GET /ecommerce/_search
{
  "query": {
    "match": {
      "product_name": {
        "query": "南极人上衣",
        "operator": "and"
      }
      }
  }
}
phrase search
完全匹配
GET /ecommerce/_search
{
 "query": {
   "match_phrase": {
     "product_name": "南极人上衣"
   }
 }
}
聚合查询
正排
Set fielddata=true on [tags] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
PUT /ecommerce/_mapping
{
  "properties": {
    "tags":{
      "type": "text",
      "fielddata": true
    }
  }
}
aggs
GET /ecommerce/_search
{
  "aggs": {
    "whatever": {
      "terms": {
        "field": "tags",
        "size": 10
      }
    }
  }
}
先分组再求平均值,之后按平均值排序
GET /ecommerce/_search
{
  "query": {
    "match": {
      "product_name": "南极人"
    }
  }, 
  "aggs": {
    "NAME": {
      "terms": {
        "field": "tags",
        "order": {
          "avg_price": "asc"
        }, 
        "size": 10
      },
    "aggs": {
      "avg_price": {
       "avg": {
         "field": "price"
       }
      }
    }
    }
  }
}
区间
GET /ecommerce/_search
{
  "aggs": {
    "price_range": {
      "range": {
        "field": "price",
        "ranges": [
          {"from": 0,
            "to": 50
          },
          {
            "from": 50,
            "to": 100
          },
          {
            "from": 100
            , "to": 150
          },
          {"from": 150,
            "to": 200
          }
        ]
      },
        "aggs": {
    "tags_group": {
      "terms": {
        "field": "tags",
        "size": 10
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
    }
  }
}