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 当数据库使:聚合后排序

elastic search6.2.2 实现用户搜索记录查询(去重、排序)的更多相关文章

  1. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(四) 之 用户搜索(Elasticsearch),加好友流程(1)。

    前面几篇基本已经实现了大部分即时通讯功能:聊天,群聊,发送文件,图片,消息.不过这些业务都是比较粗犷的.下面我们就把业务细化,之前用的是死数据,那我们就从加好友开始吧.加好友,首先你得知道你要加谁.L ...

  2. MyBatis 用户表记录数查询

    搭建MyBatis开发环境,实现用户表记录数查询 1.在MyEclipse中创建工程,导入MyBatis的jar包

  3. iOS 搜索记录

    需求描述: 使用单独的搜索界面, 提供用户进行搜索并留下搜索记录. 搜索记录可以提供用户进行再次搜索, 或者把搜索记录清空. 方案和技术点: 存储方式使用 NSUserDefaults, 把对应的字段 ...

  4. 用asp.net core 把用户访问记录优化到极致

    菜菜呀,前几天做的用户空间,用户反映有时候比较慢呀 CEO,CTO,CFO于一身的CXO 是吗? 菜菜 我把你拉进用户反馈群,你解决一下呀 CEO,CTO,CFO于一身的CXO (完了,以后没清净时候 ...

  5. Linux实战案例(4)CentOS清除用户登录记录和命令历史方法

    CentOS清除用户登录记录和命令历史方法 清除登陆系统成功的记录[root@localhost root]# echo > /var/log/wtmp //此文件默认打开时乱码,可查到ip等信 ...

  6. js实现搜索记录列表

    <div class="sy_div28"> <div class="sy_div23"> <span>搜索历史</s ...

  7. 微信小程序开发之带搜索记录的搜索框

    实现功能:点击搜索框,有搜索记录时以下拉菜单显示,点击下拉子菜单,将数据赋值到搜索框,点击搜索图标搜索,支持清空历史记录,可手动输入和清空查询关键字, UI: wxml: <!--查询历史记录数 ...

  8. Android 淘宝搜索记录分析及千牛数据库名称关联

    一 taobao搜索关键字分析1.导出淘宝数据文件夹.2.搜索search 找到search文件夹.查看里面可疑文件如history_8d4255cc9c9199c6ec3be940936986b9. ...

  9. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

随机推荐

  1. POJ 3167 Cow Pattern ★(KMP好题)

    题意 给你一个数字序列S,再给一个数字序列pattern,S和pattern中的数字都是1到s(s<=25).每个序列里的数字都有个排名,也就是第几小,现在我们要用pattern来匹配S.在本题 ...

  2. iptables详解(12):iptables动作总结之一

    前文一直在介绍iptables的匹配条件,并没有对动作进行过总结,那么此处,我们就来总结一下iptables中的动作. 之前的举例中已经用到了一些常用动作,比如ACCEPT.DROP.REJECT等. ...

  3. Math Issues

    Oh no, our Math object was "accidently" reset. Can you re-implement some of those function ...

  4. js中的真值和假值

    大多数编程语言中,布尔值true和false仅仅表示true/false.JavaScript中,如'Hello‘这样的字符串值,也可以看做true. 以下是不同数据类型在JavaScript中是如何 ...

  5. JavaScript数字和字符串转换示例

    http://www.jb51.net/article/48465.htm 1. 数字转换为字符串 a. 要把一个数字转换为字符串,只要给它添加一个空的字符串即可: 复制代码代码如下: var n = ...

  6. Oracle recovery manager failed to restore

    解决办法: 1:清理过期失效的备份, 2:增加recovery_file_dest_size参数值即可: SQL> show parameter db_recover NAME          ...

  7. c#批量上传图片到服务器示例分享

    这篇文章主要介绍了c#批量上传图片到服务器示例,服务器端需要设置图片存储的虚拟目录,需要的朋友可以参考下 /// <summary> /// 批量上传图片 /// </summary ...

  8. 转--ES6 Promise 用法讲解

    Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 var p = new Promise( ...

  9. Service的启动过程分析

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/76039510

  10. Gradle2.0用户指南翻译——第三章. 教程

    翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...