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. Ansible 小手册系列 四(详解配置文件)

    [root@host-172-20-6-120 ansible]# ansible --version ansible 2.2.0.0 config file = /etc/ansible/ansib ...

  2. ActiveMQ教程(消息发送和接受)

    一 环境的搭建 version为你的版本号 如果你是普通的项目的话,创建一个lib文件夹,导入相应的jar包到你的lib中,jar包为:activemq-all-{version}.jar.log4j ...

  3. 030——VUE中鼠标语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. cf 290F. Treeland Tour 最长上升子序列 + 树的回溯 难度:1

    F. Treeland Tour time limit per test 5 seconds memory limit per test 256 megabytes input standard in ...

  5. CF 1A

    题解: n/a*m/a 都要向上取整 代码: #include<cstdio> #include<cmath> #include<cstring> #include ...

  6. 《Effective C++》第4章 设计与声明(1)-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  7. websocket基本概念

    (1)websocket 协议 与 http协议 websocket 协议,双工通道 socket连接不断开 http 协议 ,只能请求响应 (用户主动获取) socket连接断开 都是基于socke ...

  8. linux和windows双系统设置默认启动系统

    1.以root身份登录linux系统: 2.启动终端,输入命令:vi /boot/grub/grub.conf,文件内容如下: #boot=/dev/sda default=0 (默认启动哪个系统的设 ...

  9. http和https区别

    超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文, ...

  10. 对pandas的dataframe绘图并保存

    对dataframe绘图并保存: ax = df.plot() fig = ax.get_figure() fig.savefig('fig.png') 可以制定列,对该列各取值作统计: label_ ...