ElasticSearch-7.3.0 进阶语法_Yanko24的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_43495317/article/details/104523511 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

ElasticSearch-7.3.0 进阶语法_Yanko24的博客-CSDN博客
ElasticSearch-7.3.0 进阶语法
Yanko24
于 2020-02-26 19:55:39 发布
386
收藏
分类专栏:
ElasticSearch
文章标签:
elasticsearch
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43495317/article/details/104523511
版权
ElasticSearch
专栏收录该内容
14 篇文章
1 订阅
订阅专栏
ElasticSearch-7.3.0 进阶语法
elasticsearch官方文档
字段类型
# Text:被分析索引的字符串类型
# Keyword:不能被分析只能被精确匹配的字符串类型
# Date:日期类型,可以配置 format 一起使用({"type": "date", "format": "yyyy-MM-dd"})
# 数字类型:long,integer,short,double 等
# boolean 类型:true,false
# Array:数组类型 ["one", "two"]
# Object:json 嵌套({"property1": "value1", "property2": "value2"})
# Ip类型:127.0.0.1
# Geo_point:地理位置
地址的定义:
"mappings": {
"_doc": {
"properties": {
"location": {
"type": "geo_point"
建立索引的方式:
"location": {
"lat": 41.12,
"lon": -71.34
高级查询语法
analyze分析过程
# 使用 analyze api 查看分词状态
GET /movie/_analyze
"field": "name",
"text": "Eating an apple a day & keeps the doctor awawy"
# 使用结构化的方式重新创建索引(指定分词器)
PUT /movie
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "english"
Tmdb实例
数据下载
在网上直接搜索kiggle tmdb即可下载相对应的数据文件
索引建立
# 建立 movie 索引
PUT /movie
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "english"
},
"tagline": {
"type": "text",
"analyzer": "english"
},
"release_date": {
"type": "date",
"format": "8yyyy/MM/dd||yyyy/M/dd||yyyy/MM/d||yyyy/M/d"
},
"popularity": {
"type": "double"
},
"overview": {
"type": "text",
"analyzer": "english"
},
"cast": {
"type": "object",
"properties": {
"character": {
"type": "text",
"analyzer": "standard"
},
"name": {
"type": "text",
"analyzer": "standard"
match和term
# match 查询
GET /movie/_search
"query": {
"match": {
"title": "steve zissou"
# term 查询
GET /movie/_search
"query": {
"term": {
"title": {
"value": "steve zissou"
# match 查询会根据字段所指定的分词器对查询字段进行分词,而 term 并不会对查询字段进行分词,也就是说对于上面两个示例,title 指定的是 english 分词器,所以 match 查询中的 steve zissou 会被分词器解析成 steve 和 zissou 两个关键词,所以只要 title 中含有 steve 和 zissou 中任意一个关键词的都可以被命中,而 term 查询中的 steve zissou 不会被分词器解析,也就是说只有 title 中经过分词器解析后的词包含 steve zissou 时才会被命中。
分词后的and和or
# 分词后的 or 的逻辑
GET /movie/_search
"query": {
"match": {
"title": "basketball with cartoom aliens"
# 分词后的 and 的逻辑
GET /movie/_search
"query": {
"match": {
"title": {
"query": "basketball with cartoom aliens",
"operator": "and"
最小词匹配项
# 最小词匹配项
GET /movie/_search
"query": {
"match": {
"title": {
"query": "basketball love aliens",
"operator": "or",
"minimum_should_match": 2
短语查询
# 短语查询
GET /movie/_search
"query": {
"match_phrase": {
"title": "steve zissou"
score打分
# 查看 score
GET /movie/_search
"explain": true,
"query": {
"match": {
"title": "steve"
======================================================
"details" : [
# 2.2 * 7.1592917 * 0.47008154 = 7.403992
"value" : 7.403992,
"description" : "score(freq=1.0), product of:",
"details" : [
"value" : 2.2,
# 可以手动指定这个 boost 放大系数,如果不指定,那么 es 将使用默认值为 2.2 的放大系数
"description" : "boost",
"details" : [ ]
},
"value" : 7.1592917,
# 逆文档频率:随着 n 的增加,整个 idf 是减少的
"description" : "idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details" : [
"value" : 3,
# 一共命中了 3 篇文档
"description" : "n, number of documents containing term",
"details" : [ ]
},
"value" : 4500,
# 文档的总个数为 4500
"description" : "N, total number of documents with field",
"details" : [ ]
},
"value" : 0.47008154,
"description" : "tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details" : [
"value" : 1.0,
# 搜索关键词在文档字段中出现的次数
"description" : "freq, occurrences of term within document",
"details" : [ ]
},
"value" : 1.2,
"description" : "k1, term saturation parameter",
"details" : [ ]
},
"value" : 0.75,
"description" : "b, length normalization parameter",
"details" : [ ]
},
"value" : 2.0,
# 文档字段的长度
"description" : "dl, length of field",
"details" : [ ]
},
"value" : 2.1757777,
"description" : "avgdl, average length of field",
"details" : [ ]
多字段查询
# 多字段查询:在多字段查询时,会对两个字段都进行打分,最后的打分结果取的是最大的那个分值
GET /movie/_search
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title", "overview"]
# 优化多字段查询:让 title 字段占比加大
GET /movie/_search
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title^10", "overview"]
# 优化多字段查询
GET /movie/_search
"explain": true,
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title^10", "overview"],
"tie_breaker": 0.3
# bool 查询
# must:必须都为 true
# must not:必须都是 false
# should:其中只要有一个为 true,即可
# 为 true 的越多则得分越高
GET /movie/_search
"explain": true,
"query": {
"bool": {
"should": [
"match": {
"title": "basketball with cartoom aliens"
},
"match": {
"overview": "basketball with cartoom aliens"
# 不同的 multi_query 其实是有不同的 type,type 不同则打分方式不同
# best_fields:默认的得分方式,取得最高的分数作为对应文档的得分,“最匹配模式” -> dis_max
GET /movie/_search
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title", "overview"],
"type": "best_fields"
# dis_max
GET /movie/_search
"explain": true,
"query": {
"dis_max": {
"queries": [
"match": {
"title": "basketball with cartoom aliens"
},
"match": {
"overview": "basketball with cartoom aliens"
# 查看打分规则:dis_max
GET /movie/_validate/query?explain
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title^10", "overview"],
"type": "best_fields"
# most_fields:考虑绝大多数(所有的),文档的字段得分相加获得我们想要的结果
GET /movie/_search
"explain": true,
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title", "overview"],
"type": "most_fields"
# 权重的调整是针对于 boost进行调整
GET /movie/_validate/query?explain
"query": {
"multi_match": {
"query": "basketball with cartoom aliens",
"fields": ["title^10", "overview^0.1"],
"type": "most_fields"
# cross_fields:以分词为单位计算栏位的总分,适用于词导向的匹配模式
GET /movie/_search
"explain": true,
"query": {
"multi_match": {
"query": "steve jobs",
"fields": ["title", "overview"],
"type": "cross_fields"
GET /movie/_validate/query?explain
"query": {
"multi_match": {
"query": "steve jobs",
"fields": ["title", "overview"],
"type": "cross_fields"
# query string
# 方便的利用 AND OR NOT
GET /movie/_search
"query": {
"query_string": {
"fields": ["title"],
"query": "steve AND jobs"
过滤与排序
# filter 过滤查询
# 单条件过滤
GET /movie/_search
"query": {
"bool": {
"filter": {
"term": {
"title": "steve"
# 多条件过滤
GET /movie/_search
"query": {
"bool": {
"filter": [
"term": {
"title": "steve"
},
"term": {
"cast.name": "gaspard"
# 多条件过滤
GET /movie/_search
"query": {
"bool": {
"filter": [
"term": {
"title": "steve"
},
"term": {
"cast.name": "gaspard"
},
"range": {
"release_date": {
"lte": "2015/01/01"
},
"range": {
"popularity": {
"gte": 25
# 多条件过滤并排序
GET /movie/_search
"query": {
"bool": {
"filter": [
"term": {
"title": "steve"
},
"term": {
"cast.name": "gaspard"
},
"range": {
"release_date": {
"lte": "2015/01/01"
},
"range": {
"popularity": {
"gte": 25
},
"sort": [
"popularity": {
"order": "desc"
# 带 match 打分的 filter,should 控制打分,filter 控制过滤
GET /movie/_search
"query": {
"bool": {
"should": [
"match": {
"title": "life"
],
"filter": [
"term": {
"title": "steve"
},
"term": {
"cast.name": "gaspard"
},
"range": {
"release_date": {
"lte": "2015/01/01"
},
"range": {
"popularity": {
"gte": 25
查全率查准率
查全率:正确的结果有 n 个,查询出来正确的有 m 个,所以查全率就是 m / n
查准率:查出的 n 个文档有 m 个文档是正确的,所以查准率就是 m / n
两者不可兼得,但是可以调整顺序
通常可以追求高的查全率,因为查全率高必然会导致查准率降低,保证查准率中所查询的 m 个内容排在前面,这样既可以保证用户体验,还可以保证查全率。
自定义score
# function-score
GET /movie/_search
"explain": true,
"query": {
"function_score": {
# 原始查询得到的 oldScore
"query": {
"multi_match": {
"query": "steve job",
"fields": [
"title",
"overview"
],
"operator": "or",
"type": "most_fields"
},
"functions": [
"field_value_factor": {
# 对应要调整处理的字段
"field": "popularity",
"modifier": "log2p",
"factor": 10
# function-score
GET /movie/_search
"explain": true,
"query": {
"function_score": {
# 原始查询得到的 oldScore
"query": {
"multi_match": {
"query": "steve job",
"fields": [
"title",
"overview"
],
"operator": "or",
"type": "most_fields"
},
"functions": [
"field_value_factor": {
# 对应要调整处理的字段
"field": "popularity",
"modifier": "log2p",
"factor": 10
},
"field_value_factor": {
"field": "popularity",
"modifier": "log2p",
"factor": 5
],
# 不同的 field value 之间的得分相加
"score_mode": "sum",
# 最后再与 old value 相加
"boost_mode": "sum"
Yanko24
关注
关注
点赞
收藏
打赏
评论
ElasticSearch-7.3.0 进阶语法
ElasticSearch-7.3.0 进阶语法elasticsearch官方文档字段类型# Text:被分析索引的字符串类型# Keyword:不能被分析只能被精确匹配的字符串类型# Date:日期类型,可以配置 format 一起使用({"type": "date", "format": "yyyy-MM-dd"})# 数字类型:long,integer,short,double ...
复制链接
扫一扫
专栏目录
elasticsearch-7.3.0.zip
07-01
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
【英语:基础进阶_语法进阶提升】F2.英文时态进阶
最新发布
琴韵悠悠
09-19
71
【英语:基础进阶_语法进阶提升】F2.英文时态进阶
参与评论
您还未登录,请先
登录
后发表或查看评论
elasticsearch7基础语法
u011261004的博客
11-12
642
目录
一、ES基础语法
1.1、创建索引
1.2、创建索引并指定索引ID
1.3、指定id全量修改索引
1.4、指定id部分字断修改
1.5、指定_create防止重复创建
1.6、搜索全部
1.7、获取指定ID
1.8、不指定ID建立索引
1.9、删除文档
1.10、删除索引
1.11、结构化创建索引
二、ES简单查询
2.1、主键查询
2.2、查询所有
2.3、分页查询
三、复杂查询
3.1、带条件
3.2、带排序
3.3、带聚合
一、ES基础语法
1.1、创
elasticsearch7语法
jdbcmeng的博客
06-27
241
es简单语法
ElasticSearch7.3学习(二十四)----相关度评分机制详解
09-16
272
relevance score(相关性分数) 算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度。Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法。TF词频(Term Frequency),IDF逆向文件频率(Inverse Document Frequency)搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关。数学公司并不重要,看下面例子就清楚了。
Elasticsearch7.X语法教程大全,日积月累
WoAiShuiGeGe的博客
06-29
1679
Elasticsearch
elasticsearch7 基本语法
zhyke
06-25
5031
注意:
megacorp:是index
employee:是type
使用es版本是7.1.1
在postman下进行的模拟
参考:elasticsearch权威指南
通过id进行查询
megacorp/employee/1?_source=last_name,age
_id=1 且只显示last_name,age字段
全文搜索
既能匹配出完整完整的rock climbing,又能匹配出带有ro...
elasticsearch7创建语法
yj2434的博客
09-14
234
curl -H "Content-Type: application/json" -XPOST http://node2:9200/blog/_mapping -d'
"properties": {
"id": {
"type": "long",
"store": "true",
"index": "true"
},
"first_name": {
"type": "text",
"store": "true",
"analyzer": "ik_max_word"
},
"about": {
"type
ElasticSearch7.3.0 集群搭建及配置安全认证
xiaomzhng的博客
03-26
2548
注: 由于是测试,搭建的环境就在一台机器上(操作系统是 CentOS 7)
配置 Elasticsearch
Elasticsearch 的配置文件是 elasticsearch/elasticsearch.yml
集群的名称
配置集群的名称,所有的node节点集群名称要一致
# Use a descriptive name for your cluster:
cluster.name: my-application
节点的名称
配置每个节点的名称,节点的名称要在集群中唯一
# Use a.
elasticsearch mapping参数--boost
w1346561235的博客
09-23
1109
此文档基于es7.1版本。
boost用于影响返回结果的相关性评分,在原评分基础上*boost值。如果是2的话,就是2倍打分值,如果是0.5就是原打分的一半。
测试如下:其中针对title的get的"_score" : 0.5753642,针对content的get的"_score" : 0.2876821。可以看出来是2倍值。
PUT boost_index
"mappings"...
ElasticSearch(3)
耗子窝
03-10
212
导入tmdb
tmdb是电影数据,他的数据量很大,非常适合用作es实践。直接谷歌kaggle tmdb下载。
首先还是要在es上建立mapping:
PUT /movie
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties"...
Elasticsearch评分(score)及算法调节
leadseczgw01的博客
12-28
3957
Elasticsearch评分score计算
Elasticsearch:使用 Elasticsearch 提高网站搜索查询的相关性
Elastic 中国社区官方博客
06-14
371
当你希望向用户提供满足其要求的相关数据时,相关性至关重要。这是任何企业的关键功能。吸引受众的一个好的营销策略是通过向他们提供他们正在搜索的内容来满足客户的需求。
糟糕的搜索可能会导致你平台上的流量明显减少。这是因为用户已经接受过培训,可以期待类似于 Google 搜索的结果,这并不容易获得,但是使用 Elasticsearch,你可以通过调整搜索结果的多个因素来实现它。......
ElasticSearch-7.3.0 基础语法
大数据进阶之路
02-25
526
ElasticSearch-7.3.0 基础语法
索引的操作
创建
# 非结构化方式创建(不指定 mapping)
PUT /employee/_doc/1
"name": "凯杰",
"age": 30
=======================================
# 返回结果
// 索引
"_index" : "employee",
// 类型...
Elasticsearch-7.1.x学习笔记
醉殇无痕的博客
06-13
8240
文章目录1. 单节点安装2. ES安装head插件3. Elasticsearch Rest基本操作REST介绍CURL创建索引库查询索引-GETDSL查询MGET查询HEAD的使用ES更新索引ES删除索引ES批量操作-bulkES版本控制4. Elasticsearch 核心概念Clustershardsreplicasrecoverygatewaydiscovery.zenTransportS...
elasticsearch7.3.0集群并设置密码
乐乐的博客
08-17
5962
1.生成证书
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
/usr/local/opt/es7301/config/elastic-certificates.p12
2.拷贝到另外两台服务器
cp es7301/config/elastic-certificates.p12 es7302/config/
cp es7301/config/elastic-certificates.p12 es73
ElasticSearch7.x进阶语法
wantLight的博客
04-02
281
第一步导入csv电影数据
PUT /movie
"settings" : {
"number_of_shards" : 1,
"number_of_replicas" : 1
},
"mappings": {
"properties": {
"title":{"type":"text","analyzer": "english"...
Elasticsearch 7.3.0安装(一)
摇滚吧.技术
08-19
2961
CentOS 7安装Elasticsearch 7.3.0
一、安装前准备
(1)安装JDK环境
首先到Oracle官网下载jdk。下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html。
openjdk-11.0.1_linux-x64_bin.tar.gz
链接: https://pan.bai...
Elasticsearch 有关权重的配置
热门推荐
我不想说
04-17
2万+
参考资料 Elasticsearch服务器开发 第2版
下面摘自书籍的片段
3.4 复合查询
3.4.2 加权查询......................................
93
5.4 使用查询加权影响得分
.....................
elasticsearch评分所用到的算法
种一颗十年前的树
05-19
764
1、算法介绍
relevance /ˈreləvəns/ score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度
Elasticsearch使用的是 term frequency /ˈfriːkwənsi/ /inverse document frequency算法,简称为TF/IDF算法
Term frequency:搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关
搜索请求:hello world
doc1:hello you, and
Elasticsearch7入门基础语法练习
weixin_37530941的博客
01-27
1577
Elasticsearch7基础语法入门,中文官方网站学习模拟练习,适合初学入门,ES比对mysql给出自己的理解
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:精致技术
设计师:CSDN官方博客
返回首页
Yanko24
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
147
原创
8005
周排名
4万+
总排名
12万+
访问
等级
1912
积分
2261
粉丝
54
获赞
48
评论
454
收藏
私信
关注
热门文章
Notepad++ 的安装及配置
38044
Zookeeper常见的面试题
4106
DBeaver连接Phoenix
3483
ubuntu18.04 LTS 安装常用编程软件
3398
ElasticSearch基本原理
2906
分类专栏
从零学习Flink
14篇
消息系统
7篇
Hadoop
12篇
Spark
18篇
调度工具
数据湖
Yarn
1篇
OLAP和OLTP工具
1篇
ElasticSearch
14篇
Hbase
5篇
Hive
8篇
Zeppelin
1篇
脚本语言
2篇
编程语言
33篇
Redis
2篇
数据结构和设计模式
5篇
Sqoop
2篇
ZooKeeper
3篇
项目/版本管理工具
4篇
SQL
6篇
Linux
9篇
计算机基础及常用软件安装
10篇
最新评论
Notepad++ 的安装及配置
捧着风、:
配置python的有吗
Hive常见的练习题
晓晓的雨夜:
耗时5天,刷完了
Flink中Trigger的介绍及使用
毒白sir:
这是每30分钟或1000条数据的UV吧,并不是24小时内的UV。
Notepad++ 的安装及配置
m0_51952714:
搭梯子
DBeaver连接Phoenix
chasingdream119:
同报错啊,请问你最后怎么解决的呀
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Flink中的多流转换
Flink中的Time和Window
Flink日志文件配置
2022年14篇
2021年29篇
2020年40篇
2019年53篇
2018年15篇
目录
目录
分类专栏
从零学习Flink
14篇
消息系统
7篇
Hadoop
12篇
Spark
18篇
调度工具
数据湖
Yarn
1篇
OLAP和OLTP工具
1篇
ElasticSearch
14篇
Hbase
5篇
Hive
8篇
Zeppelin
1篇
脚本语言
2篇
编程语言
33篇
Redis
2篇
数据结构和设计模式
5篇
Sqoop
2篇
ZooKeeper
3篇
项目/版本管理工具
4篇
SQL
6篇
Linux
9篇
计算机基础及常用软件安装
10篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
Yanko24
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值