ES基础
 GET /image_template_info/image_template_info/28
GET /image_template_info/image_template_info/_mapping
 查看索引的mappings
GET /image_template_info/image_template_info/_search
{
  "query":{
    "match": {
      "cn_name": "下饭"
    }
  }
} 
 基本的数据类型:
 keyword 不进行切分的字符串类型 使用term查询 不能用match
text    可进行切分的字符串类型 可按照相应的切词算法对文本内容进行切分
         使用match  不能用term
数值类型 long、integer、short、byte、double、float、half_float、
         scaled_float和unsigned_long等
         一般使用term搜索或者范围搜索
布尔类型 boolean term查询
日期类型  date  strict_date_optional_time:严格的时间类型,支持yyyy-MM-dd、yyyyMMdd等
                epoch_millis:从1970年1月1日0点到现在的毫秒数
 复杂的数据类型:
 数组类型  数组类型的字段适用于元素类型的搜索方式  
          数组元素类型是keyword,该类型可以适用于term搜索,则tag字段也可以适用于term搜索
对象类型 搜索用.进行指向 comment_info.properties.favourable_comment
地理类型 geo_point lat:纬度 lon:经度
 POST /_bulk 批量更新文档:
 POST /_bulk                              //批量请求 
 {"index":{"_index":"hotel","_id":"001"}} //指定批量请求的索引 
 {"title": "文雅酒店","city": "北京","price": 556.00} //写入的数据,指定文档_id 
 {"index":{"_index":"hotel","_id":"002"}} //指定批量请求的索引 
 //写入的数据,指定文档_id 
 {"title": "嘉怡假日酒店","city": "北京","price": 337.00} 
ES搜索
ES搜索功能
指定返回的字段:
GET /hotel/_search 
{ 
  "_source": ["title","city"],    //设定只返回title和city字段 
 "query": {                       //查询条件 
    "term": { 
      "city": { 
        "value": "北京" 
      } 
    } 
  } 
}   
SearchRequest searchRequest = new SearchRequest("hotel"); //客户端请求 
//创建搜索builder 
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
//构建query 
searchSourceBuilder.query(new TermQueryBuilder("city","北京")); 
//设定希望返回的字段数组 
searchSourceBuilder.fetchSource(new String[]{"title","city"} , null); 
searchRequest.source(searchSourceBuilder);   
 结果计数:
GET /hotel/_count 
{ 
 "query": {       //计数的查询条件 
    xxx
  } 
}   
 结果分页:
GET /hotel/_search 
{ 
 "from": 0,        //设置搜索的起始位置 
 "size": 20,       //设置搜索返回的文档个数 
 "query": {        //搜索条件 
    xxx
  } 
} 
 es不适用于深翻页  from 1000 size 10
 作为搜索引擎,ES更适合的场景是对数据进行搜索,而不是进行大规模的数据遍历
 性能分析
GET /hotel/_search 
{ 
 "profile": "true",               //打开性能剖析开关 
 "query": {                       //查询条件 
    "match": { 
      "title": "金都" 
    } 
  } 
}  
评分分析
GET /hotel/_explain/002 
{ 
  "query": { 
   "match": {                           //搜索酒店名称匹配“金都”的文档 
      "title": "金都" 
    } 
  } 
}   
针对不同的数据类型,ES提供了很多搜索匹配功能:既有进行完全匹配的term搜索,也有按照范围匹配的range搜索;既有进行分词匹配的match搜索,也有按照前缀匹配的suggest搜索。
查询所有文档
GET /hotel/_search 
{ 
 "_source": [         //只返回title和city字段 
    "title", 
    "city" 
  ], 
  "query": { 
   "match_all": {    //查询所有文档 
      "boost": 2     //设定所有文档的分值为2.0 
    } 
  } 
}  
布尔查询
 must      必须匹配该查询条件  与
 should    可以匹配该查询条件  或
 must not  必须不匹配该查询条件  非
 filter    必须匹配过滤条件,不进行打分计算 
  










