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

Elasticsearch高级搜索技术-结构化数据搜索

目录

结构化数据的存储

示例映射

使用range查询

查询示例

运算符

更多示例

日期查询

示例


    结构化数据搜索是Elasticsearch另一个强大的功能,允许用户对具有明确类型的数据(如数字、日期和布尔值)进行精确的过滤和查询。这种类型的搜索通常涉及使用比较运算符来匹配特定条件。                

结构化数据的存储

当将结构化数据存储到Elasticsearch时,你需要定义一个映射(mapping),这个映射描述了每个字段的数据类型。例如,在电子商务网站的商品索引中,price字段可以被定义为floatinteger类型,这取决于价格是否包含小数点。

示例映射
PUT /products
{"mappings": {"properties": {"name": { "type": "text" },"description": { "type": "text" },"price": { "type": "float" },"available": { "type": "boolean" },"created_at": { "type": "date" }}}
}

使用range查询

range查询允许你根据数值范围来过滤文档。你可以指定一个或多个边界,并且可以设置这些边界的开闭性(即是否包括边界值)。这对于筛选出符合特定条件的记录非常有用,比如价格低于某个阈值的所有商品。

查询示例

假设我们想要找到所有价格低于100元的商品:

GET /products/_search
{"query": {"range": {"price": {"lt": 100  // 小于100}}}
}

在这个例子中:

  • lt (less than) 指定了价格必须小于100。
  • 如果你想包括等于的情况,可以使用lte (less than or equal to)。

运算符

除了ltlte之外,还有其他几个常用的运算符:

  • gt (greater than): 大于
  • gte (greater than or equal to): 大于或等于
  • from 和 to: 可以用来指定一个范围,其中from代表下限,to代表上限
更多示例

查找价格在50至200之间的商品:

GET /products/_search
{"query": {"range": {"price": {"gte": 50,  // 大于或等于50"lte": 200   // 小于或等于200}}}
}

日期查询

对于日期字段,range查询同样适用。你可以用日期字符串或者时间戳来进行比较。

示例

查找在过去一个月内创建的所有商品:

GET /products/_search
{"query": {"range": {"created_at": {"gte": "now-1M/M",  // 大于或等于上个月初"lt": "now/M"       // 小于本月月初}}}
}

这里的now-1M/M表示从当前时间减去一个月,并且取该月的第一天;now/M则表示当前月份的第一天。

 


http://www.mrgr.cn/news/49697.html

相关文章:

  • 超GPT3.5性能,无限长文本,超强RAG三件套,MiniCPM3-4B模型分享
  • Dart的List和Map类型
  • 详细分析 Spring Framework 中的 ConfigurableApplicationContext 和 Environment (附Demo)
  • “printf”函数使用说明
  • 使用 Visual Studio Installer Projects 打包 C# WinForms 程序的教程
  • 怎么确保一个集合不能被修改?
  • 【C++贪心 DFS】2673. 使二叉树所有路径值相等的最小代价|1917
  • Golang | Leetcode Golang题解之第478题在圆内随机生成点
  • [翻译]MOSIP Blue Book
  • Spring Boot、Spring MVC和Spring有什么区别
  • 【最新华为OD机试E卷-支持在线评测】考勤信息(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • <<迷雾>> 第11章 全自动加法计算机(5)--顺序取数 示例电路
  • SpringBoot基础(五):集成JUnit5
  • Oracle AI Vector Search
  • 如何使用Python实现文件的增量备份
  • 台式机来电自启动设置
  • Java | Leetcode Java题解之第477题汉明距离总和
  • 面对配分函数 - 对数似然梯度篇
  • 苹果AI科学家研究证明基于LLM的模型存在缺陷 因为它们无法推理
  • Python | Leetcode Python题解之第478题在圆内随机生成点