ES基础知识

发布于:2024-09-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

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    必须匹配过滤条件,不进行打分计算 


 


网站公告

今日签到

点亮在社区的每一天
去签到