wordpress 缩略图 gifseozhun
目录
结构化数据的存储
示例映射
使用range查询
查询示例
运算符
更多示例
日期查询
示例
结构化数据搜索是Elasticsearch另一个强大的功能,允许用户对具有明确类型的数据(如数字、日期和布尔值)进行精确的过滤和查询。这种类型的搜索通常涉及使用比较运算符来匹配特定条件。
结构化数据的存储
当将结构化数据存储到Elasticsearch时,你需要定义一个映射(mapping),这个映射描述了每个字段的数据类型。例如,在电子商务网站的商品索引中,price
字段可以被定义为float
或integer
类型,这取决于价格是否包含小数点。
示例映射
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)。
运算符
除了lt
和lte
之外,还有其他几个常用的运算符:
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
则表示当前月份的第一天。