wordpress游客变用户品牌网站和优化网站
news/
2025/9/22 15:54:45/
文章来源:
wordpress游客变用户,品牌网站和优化网站,网站分享对联广告,代做备案网站各位小伙伴们大家好#xff0c;欢迎来到这个小扎扎的ElasticSearch专栏#xff0c;本篇博客由B战尚硅谷的ElasticSearch视频总结而来#xff0c;鉴于 看到就是学到、学到就是赚到 精神#xff0c;这波依然是血赚 ┗|#xff40;O′|┛ #x1f306; 内容速览 1 es数据格… 各位小伙伴们大家好欢迎来到这个小扎扎的ElasticSearch专栏本篇博客由B战尚硅谷的ElasticSearch视频总结而来鉴于 看到就是学到、学到就是赚到 精神这波依然是血赚 ┗|O′|┛ 内容速览 1 es数据格式2 es基础操作2.1 索引的增删查2.1.1 创建索引2.1.2 查询索引2.1.3 删除索引 2.2 映射操作2.2.1 创建映射2.2.2 查看映射 2.3 文档的增删改查2.3.1 创建文档2.3.2 查询文档2.3.3 修改文档2.3.4 删除文档 3 复杂查询3.1 条件分页查询3.1.1 查询所有3.1.2 条件查询3.1.3 分页条件查询3.1.4 指定字段返回3.1.5 指定字段排序 3.2 多字段查询3.2.1 and条件3.2.2 or条件3.2.3 值范围查询3.2.4 全文检索、完全匹配3.2.5 高亮返回 3.3 函数查询3.3.1 分组group by3.3.2 求和sum3.3.3 求平均值avg3.3.4 最大值max3.3.5 最小值min3.3.6 一次返回count/max/min/avg/sum3.3.7 去重后取总数 1 es数据格式 Elasticsearch 是面向文档型数据库一条数据在这里就是一个文档。为了方便大家理解可以将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比。ES 里的 Index 可以看做一个库而 Types 相当于表Documents 则相当于表的行。 需要注意的是这里 Types 的概念已经被逐渐弱化Elasticsearch 6.X 中一个 index 下已经只能包含一个typeElasticsearch 7.X 中, Type 的概念已经被删除。 2 es基础操作
2.1 索引的增删查
2.1.1 创建索引 对比关系型数据库创建索引就等同于创建数据库。通过apifox等工具向 ES 服务器发 PUT 请求即为创建索引 http://服务器ip:9200/索引名 2.1.2 查询索引
查询指定索引 GET 请求即为查询指定索引 查看所有的索引信息 GET 请求 http://服务器ip:9200/_cat/indices?v 2.1.3 删除索引 DELETE 请求即为删除指定索引 2.2 映射操作 映射就像是mysql数据表中对字段的限制一样映射可以指定文档的类型以及能否使用索引
2.2.1 创建映射 PUT 请求 http://服务器ip:9200/索引名/_mapping {properties: {title: {type: text,index: true},category: {type: keyword,index: true},images: {type: text,index: false},price: {type: long,index: true}}
}index的值若为false的话即不可被索引无法通过match等方式进行匹配 store是否将数据进行独立存储默认为 false。获取独立存储的字段要比从_source 中解析快得多但是也会占用更多的空间所以要根据实际业务需求来设置。 analyzer分词器这里的 ik_max_word 即使用 ik 分词器,后面讲解 2.2.2 查看映射 GET 请求 http://服务器ip:9200/索引名/_mapping 2.3 文档的增删改查
2.3.1 创建文档
向指定索引中添加文档随机id POST 请求 http://服务器ip:9200/索引名/_doc 与索引操作不同的一点是post请求的请求体中必须包含JSON格式的数据 向指定索引中添加文档指定id 如果通过以上请求创建文档的话会对该文档返回一个随机生成的_id后面需要通过该_id对文档进行查询。显而易见这个随机生成的_id并不容易记忆于是我们可以通过加一层请求的方式指定文档的_id进行创建 POST 请求 http://服务器ip:9200/索引名/_doc/id值 2.3.2 查询文档
查询指定索引下的指定文档 GET 请求 http://服务器ip:9200/索引名/_doc/id值 查询指定索引下的所有文档 GET 请求 http://服务器ip:9200/索引名/_search 2.3.3 修改文档
覆盖性修改全量更新 PUT 请求 http://服务器ip:9200/索引名/_doc/id值 全量更新的请求体中需要是全部的字段及值因为是覆盖性修改如果缺值的话之前的字段值就会不见 字段修改局部更新 POST 请求 http://服务器ip:9200/索引名/_update/id值 局部更新只需要在doc中嵌套想要修改的字段及值未指定的字段值将保持原状不变 如果doc中嵌套的字段在之前的文档中不存在的话将会作为新的字段及值添加到该文档中 2.3.4 删除文档 DELETE 请求 http://服务器ip:9200/索引名/_doc/id值 如果重复删除或者删除一个不存在的文档会返回resultnot_found 3 复杂查询
3.1 条件分页查询
3.1.1 查询所有 GET 请求 http://服务器ip:9200/索引名/_search {query: {match_all: {}}
}3.1.2 条件查询 GET 请求 http://服务器ip:9200/索引名/_search {query: {match: {category: 华为}}
}3.1.3 分页条件查询 GET 请求 http://服务器ip:9200/索引名/_search {query: {match: {category: 华为}},from: 0,size: 2
}请求体中需要使用以下json形式进行分页条件查询其中from字段表示从第几条数据开始查询size字段表示一页返回几条数据 如果想要查询指定页数的分页数据可以通过 (页码-1)*页数算出来from字段的值 3.1.4 指定字段返回
可以通过_source字段指定返回结果的字段值
{query: {match: {category: 华为}},_source: [title,category]
}3.1.5 指定字段排序
可以通过sort字段指定字段进行排序及其顺序desc降序asc升序
{query: {match: {category: 华为}},sort: {price: {order: desc}}
}3.2 多字段查询
3.2.1 and条件
must and转sql —— where category 华为 and price 10999{query: {bool: {must: [{match: {category: 华为}},{match: {price: 10999}}]}}
}3.2.2 or条件
should or转sql —— where category 华为 or category 小米{query: {bool: {should: [{match: {category: 华为}},{match: {category: 小米}}]}}
}3.2.3 值范围查询
es对应英文全拼sqlgtgreater thangtegreater than or equalltless thanlteless than or equal
以下es的json请求体转sql —— where price 100 and price 4000{query: {bool: {filter: {range: {price: {gte: 100,lte: 4000}}}}}
}3.2.4 全文检索、完全匹配
全文检索 使用“match”进行检索的话会将条件“卡拉米”拆成单个的字也就是说当所有数据中category字段包含以上三个字中的任何一个查出来。 于是下面的这个json把category为小米的文档全查出来了。如果category: 华米的话将查出来所有的category包含“华“和”米”的文档都查出来也就是说小米和华为
{query: {match: {category: 卡拉米}}
}完全匹配 如果将“match”改为“match_phrase”的话就将是完全匹配。也就是说再使用以下json进行查询的话就会没有数据返回除非换成“小米”或者“华为”这种全等的条件
{query: {match_phrase: {category: 华米}}
}3.2.5 高亮返回
highlight字段pre_tags和post_tags属性分别是高亮标签的前置标签和后置标签将fields中指定字段的满足match的字拼接标签高亮返回
{query: {match: {title: 华为}},highlight: {pre_tags: font colorred,post_tags: /font,fields: {title: {}}}
}由于match是全文检索所以会将match里的字拆成单独的字进行高亮标签的拼接 不支持数字形式的高亮返回 3.3 函数查询
下述函数查询与高亮highlight正好相反他们只支持数字类型字段的查询
3.3.1 分组group by
terms group by转sql —— group by price{aggs: {price_groupby: { // 自定义命名terms: {field: price}}}
}上面不只能查出来分组统计的数量还能查出来所有文档的详细信息如果不想让其返回的话可以使用上面分页的方式size:0 3.3.2 求和sum
sum SUM( )转sql —— select SUM(price){aggs: {sum_price: {sum: {field: price}}},size: 0
}3.3.3 求平均值avg
avg AVG( )转sql —— select AVG(price){aggs: {avg_price: {avg: {field: price}}},size: 0
}3.3.4 最大值max
max MAX( )转sql —— select MAX(price){aggs: {max_price: {max: {field: price}}},size: 0
}3.3.5 最小值min
min MIN( )转sql —— select MIN(price){aggs: {min_price: {min: {field: price}}},size: 0
}3.3.6 一次返回count/max/min/avg/sum
{aggs: {stats_price: {stats: {field: price}}},size: 0
}3.3.7 去重后取总数
cardinality distinct COUNT( )转sql —— select distinct COUNT(price){aggs: {cardinality_price: {cardinality: {field: price}}},size: 0
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909539.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!