首页 > 其他分享 >SpringCloud(七.4)ES(elasticsearch)-- DSL查询语法

SpringCloud(七.4)ES(elasticsearch)-- DSL查询语法

时间:2024-04-18 12:24:18浏览次数:14  
标签:search GET -- SpringCloud hotel 查询 DSL query match

DSL查询语法

 

1、查询所有

以下是简写和全写

 总结:

 

 2、全文检索查询(match)

全文检索查询,会对用户输入内容分词,常用于搜索框搜索:

 回顾在 SpringCloud(七.3)ES(elasticsearch)-- RestClient操作 中创建索引时添加的 all 字段,以及字段拷贝 copy_to。这里all字段就派上了用场。

 

match查询

match查询:全文检索查询的一种,会对用户输入的内容分词,然后去倒排索引库检索,语法如下:

#match查询
GET /hotel/_search
{
  "query": {
    "match": {
      "字段名": "检索内容"
    }
  }
}

示例: 这样ES会根据字段拷贝copy_to 的三个字段(名称、品牌、城市)中去检索“外滩”,并返回数据。

#match查询
GET /hotel/_search
{
  "query": {
    "match": {
      "all": "外滩"
    }
  }
}

结果如图:

 

multi_match查询(多字段查询)

multi_match查询,与match查询类似,只不过允许同时查询多个字段,但是要注意!查询的字段越多,性能越差,推荐使用match查询。

语法如下:

#multi_match查询
GET /hotel/_search
{
  "query": {
    "multi_match": {
      "query": "要检索的内容",
      "fields": ["字段1","字段2","字段3"]
    }
  }
}

示例:在名称、品牌、商圈三个字段中检索“外滩”。

#multi_match查询
GET /hotel/_search
{
  "query": {
    "multi_match": {
      "query": "要检索的内容",
      "fields": ["name","brand","business"]
    }
  }
}

结果如图:

 

3、精确查询

精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。常见的有

  • term:根据词条精确值查询。(如:品牌、城市、酒店星级等等)
  • range:根据值的范围查询。(如:价格、日期等等)

 term语法如下:

#term查询
GET /hotel/_search
{
  "query": {
    "term": {
      "字段名": {
        "value": "查询内容"
      }
    }
  }
}

示例:查询 城市 在 上海 的酒店数据

#term查询
GET /hotel/_search
{
  "query": {
    "term": {
      "city": {
        "value": "上海"
      }
    }
  }
}

结果如图:

 

range语法如下:

#range查询
GET /hotel/_search
{
  "query": {
    "range": {
      "字段名": {
        "gte": 大于等于值,
        "lte": 小于等于值
      }
    }
  }
}

示例:查询 价格 在 200-300 元区间的酒店信息

#range查询
GET /hotel/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 200,
        "lte": 300
      }
    }
  }
}

结果如图:

 

标签:search,GET,--,SpringCloud,hotel,查询,DSL,query,match
From: https://www.cnblogs.com/JoeYD/p/18143223

相关文章

  • 物联网浏览器(IoTBrowser)-整合机器学习yolo框架实现车牌识别
    https://www.cnblogs.com/yizhuqing/p/18140050 最近一段时间在研究AI技术在.Net平台的使用,目前AI绝大部分是使用Python开发,偶然一次在头条看到一篇ML.NET的介绍,是Net平台下开放源代码的跨平台机器学习框架。ML.NET详细介绍https://dotnet.microsoft.com/zh-cn/apps/machinele......
  • CAP 8.1 版本发布通告
    https://www.cnblogs.com/savorboard/p/18139824/cap-8-1 前言我们很高兴宣布CAP发布8.1版本正式版,我们在这个版本中主要是添加了一些新的配置项支持,并且根据用户反馈做了一些功能调整,同时在这个版本开始默认禁用了从7.2版本引入的并行发布消息。下面,具体看一下我们新版......
  • 在Linux中,如何使用MTR进行网络诊断和路由跟踪?
    mtr(MyTraceroute)是一个结合了traceroute和ping功能的网络诊断工具。它可以显示到目的主机的数据包传输路径,并持续监测每个路径点的丢包率和延迟。以下是使用mtr进行网络诊断和路由跟踪的详细步骤:1.安装mtr首先,你需要确保你的Linux系统上已经安装了mtr。你可以使用包管理器来......
  • 在Linux中,如何使用OpenVAS和Nessus进行漏洞扫描和管理?
    OpenVAS和Nessus都是流行的漏洞扫描和管理工具,它们可以帮助系统管理员和安全研究人员识别和修复潜在的安全漏洞。1.使用OpenVAS进行漏洞扫描和管理安装OpenVAS:在KaliLinux上,可以使用命令apt-getinstallopenvas来安装OpenVAS。安装过程中,系统会提示下载并安装一些依赖包......
  • 在Linux中,如何使用Grafana和Prometheus进行网络监控和可视化?
    Grafana和Prometheus是两个强大的开源工具,经常一起使用来进行网络监控和数据可视化。Prometheus是一个监控和警报工具,它可以收集和存储时间序列数据。Grafana则是一个开源的数据可视化和分析平台,它可以连接到Prometheus并创建丰富的仪表板来展示和分析数据。1.安装和配置Prometh......
  • 在Linux中,如何使用ELK进行日志管理和分析?
    在Linux环境下使用ELKStack(Elasticsearch、Logstash、Kibana)进行日志管理和分析的过程主要包括以下几个主要步骤:1.安装和配置ElasticsearchElasticsearch是一个分布式的搜索引擎和数据分析引擎,用于存储和检索数据。在Linux上安装Elasticsearch可以通过包管理器或者直接下载......
  • 在Linux中,如何使用Suricata进行实时网络威胁检测?
    Suricata是一个开源的威胁检测系统,主要用于实时网络威胁检测。它结合了IDS(入侵检测系统)、IPS(入侵防护系统)和网络安全监控的功能,可以高效地检测网络流量中的恶意行为。以下是在Linux中使用Suricata进行实时网络威胁检测的详细步骤:1.安装Suricata首先,你需要从Suricata的官方网站......
  • 利用python脚本对邮箱密码进行批量爆破
    利用python脚本对邮箱密码进行批量爆破importpoplib#导入POP3库fromemailimportparser#导入邮件解析器fromgetpassimportgetpass#导入密码输入函数pop_server='mail.test.com'#设置POP3服务器地址,改成需要爆破的目标邮箱pop3服务器地址pop_port=995......
  • 1048 数字加密
    #include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;#definelllonglongchara[110],b[110];intcal[110],cal2[110];charcal3[110];intmain(){ cin>>a>>b; intp1=0,p2=0; for(inti=strlen(a)-1;i>=0;i--){ c......
  • Python-统计和微积分研讨会(三)
    Python统计和微积分研讨会(三)原文:zh.annas-archive.org/md5/6cbaed7d834977b8ea96cc7aa6d8a083译者:飞龙协议:CCBY-NC-SA4.0第五章:用Python进行更多数学概述在本章结束时,你将能够掌握序列和级数的基本概念,并编写实现这些概念的Python函数。你将了解基本三角函数及其应......