当前位置: 首页 > article >正文

ES基础知识

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


 


http://www.kler.cn/a/303971.html

相关文章:

  • C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型
  • JVM详解:JVM的系统架构
  • Flink_DataStreamAPI_输出算子Sink
  • 2024.11.12_大数据的诞生以及解决的问题
  • jenkins提交gitee后自动部署
  • 使用CubeMX一键配置Freertos
  • HarmonyOS学习(十二)——数据管理(一)分布式数据
  • 基于Ubuntu2404搭建mysql8配置远程访问
  • CAT1 DTU软硬件设计开源资料分析(TCP协议+GNSS定位版本 )
  • vue在一个组件引用其他组件
  • Docker Desktop 的安装与汉化指南
  • 【笔记】第二节 熔炼、轧制、热处理和焊接工艺
  • 供应RM500UCNAB-D10-SNADA模块
  • LLM的工作原理详解
  • 替代区块链
  • AI绘画:科技赋能艺术的崭新时代
  • vscode中使用go环境配置细节
  • Leetcode面试经典150题-162.寻找峰值
  • 《Docker:轻量级虚拟化解决方案》
  • Spring MVC 处理请求
  • 低代码-赋能新能源汽车产业加速前行
  • Anolis 8 NVME over TCP 配置使用
  • Qt-常用控件(3)-输入类
  • 【C++】深究C++三大特性之多态
  • 香港电讯SASE解决方案:终端与云端的安全护航
  • C语言 13 指针