全文检索ElasticSearch的简单使用笔记
工具:kibana
GET _search
{
"query": {
"match_all": {}
}
} #创建索引结构
PUT sku
{
"mappings":{
"doc":{
"properties":{
"name":{
"type":"text",
"analyzer":"ik_smart"
},
"price":{
"type":"integer"
},
"image":{
"type":"text"
},
"createTime":{
"type":"date"
},
"spuId":{
"type":"keyword"
},
"categoryName":{
"type":"keyword"
},
"brandName":{
"type":"keyword"
},
"spec":{
"type":"object"
},
"saleNum":{
"type":"integer"
},
"commentNum":{
"type":"integer"
}
}
}
}
}
#插入文档 id 自动生成 POST sku/doc
{
"name":"小米手机11",
"price":400000,
"spuId":"101",
"createTime":"2019-01-10",
"categoryName":"手机",
"brandName":"小米",
"saleNum":110214,
"commentNum":15002,
"spec":{
"网络制式":"移动5G",
"屏幕尺寸":"6.0"
}
}
# id为1
PUT sku/doc/1
{
"name":"小米手机",
"price":200000,
"spuId":"101",
"createTime":"2019-11-10",
"categoryName":"手机",
"brandName":"小米",
"saleNum":1022,
"commentNum":15500,
"spec":{
"网络制式":"移动5G",
"屏幕尺寸":"6.0"
}
}
#查询所有数据
GET sku/_search #匹配查询数据
GET sku/_search
{
"query": {
"match_all": {}
}
} #匹配查询数据
GET sku/_search
{
"query": {
"match": {
"name":"小米电视"
}
}
} #精确查询数据
GET sku/_search
{
"query": {
"match": {
"name": {
"query":"小米电视",
"operator":"and"
}
}
}
} #多字段查询包含在"name","categoryName","brandName"字段的 小米
GET sku/_search
{
"query":{
"multi_match":{
"query":"小米",
"fields":["name","categoryName","brandName"]
}
}
} #词条匹配 查询价格=200000
GET sku/_search
{
"query": {
"term": {
"price": {
"value": "200000"
}
}
}
} #多词条匹配 查询价格=200000
GET sku/_search
{
"query": {
"terms": {
"price":[200000,100000]
}
}
} #布尔组合查询 查询名称包含手机的,并且品牌为小米的。
GET sku/_search
{
"query": {
"bool": {
"must": [
{"match": {"name": "手机"}},
{"term": {"brandName": "小米"}}
]
}
}
} #:查询名称包含手机的,或者品牌为小米的. 满足任意一个就可以 GET sku/_search
{
"query": {
"bool": {
"should": [
{"match": {"name": "手机"}},
{"term": {"brandName": "小米"}}
]
}
}
} # 过滤查询 过滤品牌为小米的记录
# 过滤是针对搜索的结果进行过滤,过滤器主要判断的是文档是否匹配,不去计算和判断文档的匹配度得分所以过滤器性能比查询要高,且方便缓存,推荐尽量使用过滤 器去实现查询或者过滤器和查询共同使用。
GET sku/_search
{
"query": {
"bool": {
"filter": [
{"match":{"brandName":"小米"}}
]
}
}
} #分组查询 一个结果集
#示例:按分组名称聚合查询,统计每个分组的数量
GET sku/_search
{
"size":0,
"aggs": {
"sku_category": {
"terms": {
"field": "categoryName"
}
}
}
}
#分组 多个结果集
# 按照 分类查询统计 和按照品牌查询统计
#"size":0, 不显示 "hits" : [] 里面的数据
GET sku/_search
{
"size":0,
"aggs": {
"sku_category": {
"terms": {
"field": "categoryName"
}
},
"sku_brand按照品牌查询分组": {
"terms": {
"field": "brandName"
}
}
}
}
全文检索ElasticSearch的简单使用笔记的更多相关文章
- Elasticsearch入门学习重点笔记
原文:Elasticsearch入门学习重点笔记 必记知识点 Elasticsearch可以接近实时的搜索和存储大量数据.Elasticsearch是一个近实时的搜索平台.这意味着当你导入一个文档并把 ...
- 3.2 配置构建Angular应用——简单的笔记存储应用
本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- 3.2.1 配置构建Angular应用——简单的笔记存储应用——编辑功能
本节我们会接着上节课的内容,继续来完成使用Angular来创建简单的笔记存储应用,上一节课,我们完成了笔记的展示功能,本节课,我们来完成编辑功能. 编辑主要是两个功能:编辑现有的笔记以及创建新笔记.首 ...
- 3.2.1 配置构建Angular应用——简单的笔记存储应用——展示功能
本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...
- Elasticsearch集群知识笔记
Elasticsearch集群知识笔记 Elasticsearch内部提供了一个rest接口用于查看集群内部的健康状况: curl -XGET http://localhost:9200/_clust ...
- Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看
一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...
随机推荐
- PAT Basic 1020 ⽉饼 (25) [贪⼼算法]
题目 ⽉饼是中国⼈在中秋佳节时吃的⼀种传统⻝品,不同地区有许多不同⻛味的⽉饼.现给定所有种类⽉饼的库存量.总售价.以及市场的最⼤需求量,请你计算可以获得的最⼤收益是多少. 注意:销售时允许取出⼀部分库 ...
- cookie保存
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证
登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...
- latex学习笔记----基本知识、文档排版
1.空格和制表符等空白字符视为相同的空白距离,多个连续的空白字符等同为一个字符. 2.# $ % ^ _ { } ~ 在这些字符前面加上反斜线,就可以在文本中得到它们. 反斜线\不 ...
- 9. Dockerfile 实际操作 (把 python app 打包成 image 并运行)
1. 创建并进入 flask-hello-world mkdir flask-hello-world && cd flask-hello-world 2. 编写 python 文件 a ...
- 3.docker machine 连接 aliyun 远程docker 服务器
1.在aliyun ecs 创建docker 服务器 docker-machine create -d aliyunecs machine-aliyunecs 2.远程连接 docker 获取客户端 ...
- python文件读写 文件修改
#设置一个变量f为文件对象,并打开文件#写文件#f = open('user.txt','w',encoding='utf-8') #f是一个文件对象f=open(r'c:\Users\PL\Desk ...
- C#通过窗体应用程序操作数据库(增删改查)
为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...
- F 乘法(第k大问题)(二分)
题:https://ac.nowcoder.com/acm/contest/3979/F 题意:俩个序列俩俩相乘得到n*m个数,求第k大的数是哪个 分析:二分 #include<bits/std ...
- oracle 查询表空间
测试用户连接C:\Users\ZP>sqlplus /nologconn hbcxuser/hbcxpass --查看所有表空间 select * from user_tablespaces-- ...