ElasticSearch系列-高级查询

ElasticSearch对数据得操作-增删查改|过滤|排序|分页查询|指定查询|高亮|聚合 ElasticSearch restful api (DSL) DSL全称 Domain Specific language,即特定领域专用语言。 es中保存的数据结构 以文档方式存储, 查看es中有哪些索引 增加一个索引 PUT /movie_index 删除一个索引 ES 是不删除也不修改任何数据的,而是增加版本号 // 将整个表(idnex)删除 DELETE /movie_index // 删除某一条数据 DELETE /movie_index/move/3 新增文档 // PUT: 幂等 阅读详情

ElasticSearch高级查询

说明

​ ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL , Query DSL是利用 Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互,这种方式的 丰富查询语法让ES检索变得 更强大,更简洁。

语法

# GET /索引名/_doc/_search {json格式请求体数据}
# GET /索引名/_search {json格式请求体数据}
  • 测试数据
# 1.创建索引 映射
PUT /products/
{
  "mappings": {
    "properties": {
      "title":{
        "type": "keyword"
      },
      "price":{
        "type": "double"
      },
      "created_at":{
        "type":"date"
      },
      "description":{
        "type":"text"
      }
    }
  }
}
# 2.测试数据
PUT /products/_doc/_bulk
{"index":{}}
  {"title":"iphone12 pro","price":8999,"created_at":"2020-10-23","description":"iPhone 12 Pro采用超瓷晶面板和亚光质感玻璃背板,搭配不锈钢边框,有银色、石墨色、金色、海蓝色四种颜色。宽度:71.5毫米,高度:146.7毫米,厚度:7.4毫米,重量:187克"}
{"index":{}}
  {"title":"iphone12","price":4999,"created_at":"2020-10-23","description":"iPhone 12 高度:146.7毫米;宽度:71.5毫米;厚度:7.4毫米;重量:162克(5.73盎司) [5]  。iPhone 12设计采用了离子玻璃,以及7000系列铝金属外壳。"}
{"index":{}}
  {"title":"iphone13","price":6000,"created_at":"2021-09-15","description":"iPhone 13屏幕采用6.1英寸OLED屏幕;高度约146.7毫米,宽度约71.5毫米,厚度约7.65毫米,重量约173克。"}
{"index":{}}
  {"title":"iphone13 pro","price":8999,"created_at":"2021-09-15","description":"iPhone 13Pro搭载A15 Bionic芯片,拥有四种配色,支持5G。有128G、256G、512G、1T可选,售价为999美元起。"}

常见检索

查询所有[match_all]

match_all关键字: 返回索引中的全部文档

GET /products/_search
{
  "query": {
    "match_all": {}
  }
}
关键词查询(term)

term 关键字: 用来使用关键词查询

GET /products/_search
{
 "query": {
   "term": {
     "price": {
       "value": 4999
     }
   }
 }
}

NOTE1: 通过使用term查询得知ES中默认使用分词器为标准分词器(StandardAnalyzer),标准分词器对于英文单词分词,对于中文单字分词。

NOTE2: 通过使用term查询得知,在ES的Mapping Type 中 keyword , date ,integer, long , double , boolean or ip 这些类型不分词,只有text类型分词。

范围查询[range]

range 关键字: 用来指定查询指定范围内的文档

GET /products/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 1400,
        "lte": 9999
      }
    }
  }
}
前缀查询[prefix]

prefix 关键字: 用来检索含有指定前缀的关键词的相关文档

GET /products/_search
{
  "query": {
    "prefix": {
      "title": {
        "value": "ipho"
      }
    }
  }
}
通配符查询[wildcard]

wildcard 关键字: 通配符查询 ? 用来匹配一个任意字符 * 用来匹配多个任意字符

GET /products/_search
{
  "query": {
    "wildcard": {
      "description": {
        "value": "iphon*"
      }
    }
  }
}
多id查询[ids]

ids 关键字 : 值为数组类型,用来根据一组id获取多个对应的文档

GET /products/_search
{
  "query": {
    "ids": {
      "values": ["verUq3wBOTjuBizqAegi","vurUq3wBOTjuBizqAegk"]
    }
  }
}
模糊查询[fuzzy]

fuzzy 关键字: 用来模糊查询含有指定关键字的文档

GET /products/_search
{
  "query": {
    "fuzzy": {
      "description": "iphooone"
    }
  }
}

注意: fuzzy 模糊查询 最大模糊错误 必须在0-2之间

  • 搜索关键词长度为 2 不允许存在模糊

  • 搜索关键词长度为3-5 允许一次模糊

  • 搜索关键词长度大于5 允许最大2模糊

布尔查询[bool]

bool 关键字: 用来组合多个条件实现复杂查询

​ must: 相当于&& 同时成立

​ should: 相当于|| 成立一个就行

​ must_not: 相当于! 不能满足任何一个

GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {
          "price": {
            "value": 4999
          }
        }}
      ]
    }
  }
}
多字段查询[multi_match]
GET /products/_search
{
  "query": {
    "multi_match": {
      "query": "iphone13 毫",
      "fields": ["title","description"]
    }
  }
}
注意: 字段类型分词,将查询条件分词之后进行查询改字段  如果该字段不分词就会将查询条件作为整体进行查询
默认字段分词查询[query_string]
GET /products/_search
{
  "query": {
    "query_string": {
      "default_field": "description",
      "query": "屏幕真的非常不错"
    }
  }
}
注意: 查询字段分词就将查询条件分词查询  查询字段不分词将查询条件不分词查询
高亮查询[highlight]

highlight 关键字: 可以让符合条件的文档中的关键词高亮

GET /products/_search
{
  "query": {
    "term": {
      "description": {
        "value": "iphone"
      }
    }
  },
  "highlight": {
    "fields": {
      "*":{}
    }
  }
}

自定义高亮html标签: 可以在highlight中使用pre_tags和post_tags

GET /products/_search
{
  "query": {
    "term": {
      "description": {
        "value": "iphone"
      }
    }
  },
  "highlight": {
    "post_tags": ["</span>"], 
    "pre_tags": ["<span style='color:red'>"],
    "fields": {
      "*":{}
    }
  }
}

多字段高亮 使用require_field_match开启多个字段高亮

GET /products/_search
{
  "query": {
    "term": {
      "description": {
        "value": "iphone"
      }
    }
  },
  "highlight": {
    "require_field_match": "false",
    "post_tags": ["</span>"], 
    "pre_tags": ["<span style='color:red'>"],
    "fields": {
      "*":{}
    }
  }
}
返回指定条数[size]

size 关键字: 指定查询结果中返回指定条数。 默认返回值10条

GET /products/_search
{
  "query": {
    "match_all": {}
  },
  "size": 5
}
分页查询[form]

from 关键字: 用来指定起始返回位置,和size关键字连用可实现分页效果

GET /products/_search
{
  "query": {
    "match_all": {}
  },
  "size": 5,
  "from": 0
}
指定字段排序[sort]
GET /products/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}
返回指定字段[_source]

_source 关键字: 是一个数组,在数组中用来指定展示那些字段

GET /products/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["title","description"]
}

本文由 mdnice 多平台发布

2.ELK之Elasticsearch常用DSL语句(kibana语句) Filter DSL term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型): { “term”: { “age”: 26 }} { “term”: { “date”: “2014-09-01” }} { “term”: { “public”: true }} { “term”: { “tag”: “full_text” }} 完整的例子, hostname 字段完全匹配成 xxx 的数据: { "query" 阅读详情

相关推荐

Elasticsearch 高级

Elasticsearch 中的nested类型允许你在文档内存储复杂的数据结构,比如一个用户可能有多个地址,或者一个博客文章可能有多个标签等。nested类型可以让你索引这些复杂数据,并且允许你对嵌套的数据进行查询。在设置索引映射时自定义同义词分词器,并且用于 “title” 字段的搜索。},},"title": {是自定义的词汇过滤器;是自定义的分析器,包含并引用了;updateable指示能否动态更新,必须为true才能动态更新同义词;指示同义词文件的位置;分析器里用ik_smart。

大一点的小孩 1235

elasticsearch常用操作

一、常用操作 (1)索引库操作 1、创建索引库(并指定ik分词器) PUT /es_db { "settings": { "index":{ "analysis.analyzer.default.type":"ik_max_word" } } } 2、查询索引库 GET /es_db 3、删除索引库 DELETE /es_db (2)文档操作 1、添加或修改文档(根据有无id判断) PUT /es_db/_doc/1 { "name"............

sumengnan的博客 1万+

ElasticSearch-深入理解系列8-高级查询

1 查询类型 1.1 根据ID直接查询文档 :GET /index/type/id .类似sql :select * from where tablename=id 1.2 空查询。Get /_search .类似select * from tablename.返回结果格式: { "hits" : { "total" : 14, //结果数量 "hits" : [ /

a314773862的博客 4777

ES查询知识小结

es的查询语法学习

weixin_45442529的博客 1万+

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6491

知识图谱与人工智能本体论:构建机器认知的语义基石

本文探讨了知识图谱与人工智能本体论如何作为机器认知的语义基石,让AI从‘知道数据’迈向‘理解知识’。文章详细拆解了本体论的核心构件与构建方法,并阐述了从本体到知识图谱的实践路径,包括知识获取、融合、存储及推理应用,最终分析了其在智能搜索与专家系统等场景中带来的根本性重塑。

nginx7reverse的博客 909

袁庭新ES系列12节 | Elasticsearch高级查询操作

接下来袁庭新老师为大家带来Elasticsearch高级查询部分相关的内容。Elasticsearch是基于JSON提供完整的查询DSL(Domain Specific Language:领域特定语言)来定义查询。因此,我们有必要在专题模块来详细探讨Elasticsearch高级查询部分内容。

2301_82300081的博客 1281

大模型系统构建的“三驾马车”——Prompt、Context与Harness工程

在LLM应用开发的早期阶段,我们热衷于比拼“提示词”的精妙程度。那时,一个精心构造的思维链CoT就能让模型的表现提升10%以上。随着大模型从“玩具”走向“生产系统”,我们逐渐意识到:单一的 Prompt 只是起点,而非终点。 真正的工业级应用,需要构建一套三层递进的工程体系——Prompt Engineering、Context Engineering 和 Harness Engineering。

西木风落 604

架构师系列-搜索引擎ElasticSearch(四)- 高级查询

ES查询。

dengwei_dw的专栏 1598

AAAI2024最佳解读|FontDiffuser One-Shot Font Generation via Denoising Diffusion with Multi-Scal

本文提出了一种名为FontDiffuser的基于扩散的单次字体生成方法,旨在通过去噪扩散模型生成模仿参考图像风格的字体,同时保留源图像的内容。尽管现有的字体生成方法在性能上取得了一定的进展,但在处理复杂字符和大风格变化时仍面临挑战。FontDiffuser通过引入多尺度内容聚合(MCA)模块,有效结合不同尺度的全局和局部内容线索,从而增强复杂字符的笔画保留能力。此外,文章还提出了一种风格对比细化(SCR)模块,用于风格表示学习,利用风格提取器从图像中分离风格,并通过精心设计的风格对比损失来监督扩散模型。

haimianxiaobao11的博客 1190

ZBrush 2021来了

这次给大家带来的是:zbrush2021.1.1 win安装教程 1.下载压缩包之后解压到文件夹当中,然后打开ZBrush_2021_Installer.exe进行软件安装, 如下图 2.在这里我们保持默认的简体中文版即可,然后点击确认,如下图 3.第三步我们点击前进即可,如下图 4.第四步我们来到许可协议,在这里我们点击我接受此协议,然后点击前进,如下图 5.第五步我们来到安装目录,在这里我们可以设置安装路径,如下图 6.在这里我将安装目录修改安装到E盘为例,然后点击下一

3D游戏建模 1187

[学习ES系列]-4.ElasticSearch基础交互-基础查询与高级查询

基础查询 POST http://127.0.0.1:9200/book/_search 1.简单查询 { "query":{ "match_all":{} } } 2.条件查询 { "query":{ "match":{ "title":"入门到精通" } }, "from...

weixin_34205076的博客 133

从真题到策略:浙江工业大学计算机转专业机试全解析与备考指南

本文全面解析浙江工业大学计算机转专业机试的考试概况、典型真题和高频考点,提供详细的备考策略和面试准备建议。从机试题目类型到解题技巧,帮助考生高效备考,顺利通过这一竞争激烈的转专业关卡。

weixin_42524824的博客 419

es多条件查询php,[学习ES系列]-4.ElasticSearch基础交互-基础查询与高级查询

基础查询1.简单查询{"query":{"match_all":{}}}2.条件查询{"query":{"match":{"title":"入门到精通"}},"from":1,"size":5,"sort":{"publish_date":{"order":"asc"}}}3.聚合查询{"aggs":{"group_by_word_count":{"terms":{"field":"word_co...

weixin_39609483的博客 654

Modbus协议学习第一篇之基础概念

因工作需要而接触Modbus,正在恶补知识,利用博客的方式来加深理解和记忆,同时希望同行大佬能一起交流。

hzf978742221的博客 880

数据分析案例-对某宝用户评论做情感分析

目录 原始数据 绘制词云图 情感分析 原始数据 原始数据为某宝一商品的用户评论数据 绘制词云图 # coding=utf-8 import jieba import re import wordcloud import imageio # 打开需要分析词频的文本 with open('淘宝评论3.0.txt', encoding='utf-8') as f: data = f.read() # 文本预处理 :去除一些无用的字符只提取出中文出来 new_data

m0_64336780的博客 1万+

【ElasticSearch系列-03】ElasticSearch的高级句法查询Query DSL

ElasticSearch的高级句法查询Query DSL

zhenghuishengq的博客 2705

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【elasticsearch系列】javaApi高级查询

全匹配查询 // 创建客户端 RestHighLevelClient esClient=new RestHighLevelClient( RestClient.builder(new HttpHost("localhost",9200,"http")) ); // 创建查询对象 SearchRequest request=new SearchRequest(); // 设置索引 request.indices("user"); // 设置查询条件 request.source(new SearchSou

自律即是最自由 1115

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ES进阶系列 — 1 JVM内存分配

ES高级系列 — 1 节点JVM内存分配 ES高级系列 — 2 如果确定主节点数量和备份数 ES高级系列 — 3 线上慢查询排查 ES高级系列 — 4 平稳升级级快照恢复 ============= 待续 =============

永生只是一场幻梦 1032

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

3分钟掌握ES-Client:简单高效的Elasticsearch桌面客户端完整指南

你是否正在寻找一款轻量、快速、安全的Elasticsearch管理工具?ES-Client正是为满足这一需求而设计的桌面客户端,它让Elasticsearch的日常管理变得前所未有的简单高效。无论你是开发人员、运维工程师还是数据分析师,这款工具都能显著提升你与Elasticsearch交互的效率。 ## 为什么选择ES-Client?🤔 传统的Elasticsearch管理方式往往需要依赖K

gitblog_00671的博客 317

系列课程 ElasticSearch 之第 5 篇 —— Kibana 高级查询语句、DSL语言查询和过滤、中文分词器(elasticsearch.bat闪退解决办法)

Elasticsearch: 使用文档权威指南https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html OK,我们先使用 Kibana 生成一些文档数据: PUT /biandan/user/zhangsan { "name":"张三", "job":"Java工程师", "sign":"走别人的路,让别人无路可走。", "age":20 } PUT /biandan/user/l...

流放深圳 1614

Elasticsearch入门

安装JAVAwgethttp://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.tar.gz tarzxvfjdk-8u101-linux-x64.tar.gz vim/etc/profile 添加如下内容: JAVA_HOME=/usr/jdk CLASSPATH=$JAVA_...

weixin_34114823的博客 67

使用curl命令操作elasticsearch And 使用http 查询ES

第一:_cat系列  _cat系列提供了一系列查询elasticsearch集群状态的接口。你可以通过执行  curl -XGET localhost:9200/_cat  获取所有_cat系列的操作  =^.^=  /_cat/allocation  /_cat/shards  /_cat/shards/{index}  /_cat/master  /_cat/nodes 

z69183787的专栏 3万+

ES基本查询语句教程

前言 es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,,提供简单的RESTful API来隐藏Lucene的复杂性。 es除了全文搜索引擎之外,还可以这样描述它: 1、分布式的实时文件存储,每个字段都被索引并可被搜索 2、分布式的实时分析搜索引擎 3、可以扩展到成百上千台服务器,处理PB级结构化或非结构化数据。 ES的数据组织类比 Relational DB Elasticsearch 数据库(database) 索引(indices) 表(tables) types

大白菜的博客 4725

ES数据查询

转载自:ES基本查询语句教程 - @ 小浩 - 博客园 1.ES是基于Apache Lucene的开源分布式(全文)搜索引擎。 es除了全文搜索引擎之外,还可以这样描述它: 1、分布式的实时文件存储,每个字段都被索引并可被搜索 2、分布式的实时分析搜索引擎 3、可以扩展到成百上千台服务器,处理PB级结构化或非结构化数据。 ES的数据组织类比 Relational DB Elasticsearch 数据库(database) 索引(indices) 表(tables)

rusuo_1995的博客 2万+

ElasticSearch从入门到精通,史上最全

ElasticSearch从入门到精通

qq_38958531的博客 201
上一篇: JVM专栏-类加载的时机
下一篇: 无处不在的字节码技术-ASM在cglib和fastjson中的应用
yue_stack
博客等级 码龄3年 6粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值