elastic search6.2.2 实现用户搜索记录查询(去重、排序)

elastic search6.2.2 实现搜索记录查询 ,类似新浪微博这种,同样的搜索记录后面时间点的会覆盖前面的(主要思路:关键词去重,然后按时间排序)

 

先创建索引

//我的搜索
PUT my_search
{
    "settings":{
        "number_of_replicas": 0
    },
    "mappings":{
        "_doc":{
            "properties":{
                "user": {"type": "integer"},
                "word": {"type": "keyword"},
                "datetime": {
                    "type": "date",
                    "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                }
            }
        }
    }
}

 

 插入搜索记录

POST my_search/_doc
// 自动生成ID

{
    "user": 1,
    "word": "区块链",
    "datetime":"2018-02-08 23:58:59"
}


{
    "user": 1,
    "word": "刘平",
    "datetime":"2018-03-08 23:58:59"
}

{
    "user": 1,
    "word": "你好",
    "datetime":"2018-04-08 23:58:59"
}


{
    "user": 1,
    "word": "我好",
    "datetime":"2018-05-08 23:59:59"
}


{
    "user": 1,
    "word": "你好",
    "datetime":"2018-06-08 23:58:59"
}


{
    "user": 1,
    "word": "他好",
    "datetime":"2018-07-09 23:58:59"
}


{
    "user": 1,
    "word": "他好",
    "datetime":"2018-08-09 23:58:59"
}

 

 写入文档后的搜索记录可视界面(以按时间排序)

 下面要读取出来了

POST my_search/_search
// 我的最近搜索记录(展示10条)
{
    "query":{
        "match":{
            "user":"1"
        }
    },
    "aggs":{
        "my_so":{
            "terms":{
                "field":"word",
                "size":10,
                "order":{
                    "max_time":"desc"
                }
            },
            "aggs":{
                "max_time":{
                    "max":{
                        "field":"datetime"
                    }
                }
            }
        }
    },
    "size":0,
    "from":0
}

 

 

 

搜索结果:

 

 

下面是网友总结的一些聚合排序方法:

把 Elasticsearch 当数据库使:聚合后排序

 

转载于:https://www.cnblogs.com/liugx/p/8485656.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值