6.range filter进行范围过虑

主要知识点

  • 掌握range filter的用法

   

range filter就是查找一个范围内的数据,相当于sql中的betwen语法,以下是几个示例:

   

1、为帖子数据增加浏览量的字段

   

POST /forum/article/_bulk

{ "update": { "_id": "1"} }

{ "doc" : {"view_cnt" : 30} }

{ "update": { "_id": "2"} }

{ "doc" : {"view_cnt" : 50} }

{ "update": { "_id": "3"} }

{ "doc" : {"view_cnt" : 100} }

{ "update": { "_id": "4"} }

{ "doc" : {"view_cnt" : 80} }

   

2、搜索浏览量在30~60之间的帖子

   

GET /forum/article/_search

{

"query": {

"constant_score": {

"filter": {

"range": {

"view_cnt": {

"gt": 30,

"lt": 60

}

}

}

}

}

}

3、搜索发帖日期在最近1个月的帖子

   

再插入一条数据。

POST /forum/article/_bulk

{ "index": { "_id": 5 }}

{ "articleID" : "DHJK-B-1395-#Ky5", "userID" : 3, "hidden": false, "postDate": "2017-03-01", "tag": ["elasticsearch"], "tag_cnt": 1, "view_cnt": 10 }

   

对特定时间范围进行搜索

GET /forum/article/_search

{

"query": {

"constant_score": {

"filter": {

"range": {

"postDate": {

"gte":"2017-01-10||-30d"

}

}

}

}

}

}

   

对当前时间之前的一段时间范围进行搜索

GET /forum/article/_search

{

"query": {

"constant_score": {

"filter": {

"range": {

"postDate": {

"gt": "now-30d"

}

}

}

}

}

}

原文地址:https://www.cnblogs.com/liuqianli/p/8483951.html