-
es入门
注:1.7以后版本移除类型这个概念
索引(indices)/index----------------------Databases 数据库
类型(type)--------------------------Table 数据表
文档(Document)----------------------Row 行
字段(Field)-------------------------Columns 列
注意:Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作
2.0 search
2.1 match_all 无条件匹配默认查询的是所有
GET /es_db/_doc/_search
{
"query":{
"match_all":{}
}
}
2.2 match匹配检索
2.4 短语匹配(match_phrase)
如查 小梅是坏蛋。会把这个整句当成一个词来处理
2.5 多字段匹配 (multi_match)
multi_match 支持查询字段进行拆分 :如查小梅是坏蛋,会对这个词进行拆分
2.6 复合查询语句( boll)
boll 包含3个,must notmust should
must: 必须满足的条件
notmust:过滤条件
should:应该满足条件:查出的结果集可以不必须包含这个。如果包含这个,则他的得分是在最前面的
must,should筛选条件,会参与计算得分。而filter不会参与计算贡献得分的
2.7term检索
如果name字段是keyword类型,则使用term就必须精确查找了
PUT /es_db
{
"mappings": {
"properties": {
"name": {
"type": "keyword",
"index": true,
"store": true
}
}
}
}
PUT /es_db/_doc/1
{
"name": "张三",
"sex": 1,
"age": 25,
"book": "elasticSearch入门至精通",
"address": "广州车陂"
}
GET /es_db/_search
{
"query": {
"term": {
"name": "张三"
}
}
}
2.8 聚合aggs(aggregations)
聚合aggs提供了从数据中分组和提取数据的能力。最简单的聚合大致等于mysql中的Groupby和聚合函数
https://www.elastic.co/guide/en/elasticsearch/reference/7.10/search-aggregations.html
查出所有年龄分布,并且这些年龄段中性别为M的平均薪资和性别为F的平均薪资以及这个年龄段的总体平均薪资
最后总体结果:
3 Mapping
Mapping定义了一个文档应该被怎样处理,以及字段以什么类型进行处理。
3.1 添加映射
Create an index with an explicit mapping[edit]
You can use the [create index]
PUT "my-index-000001"
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
}
基于以上可以往里面追加类型(You can use the [put mapping] API to add one or more new fields to an existing index
)
"my-index-000001/_mapping"
{
"properties": {
"employee-id": {
"type": "keyword",
"index": false
}
}
}
'
3.2 更新映射
es不支持直接更新映射。如果非要更新的话,只能用数据迁移的方式进行。
先创建一个新索引,将以前索引的数据迁移到新索引中。
POST "_reindex"
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
'
4. 分词器
4.0 默认的分词器对中文都支持不好
4.1 IK分词器。
在es中的plugin中导入ik
4.2 自定义ik分词的词库
修改配置文件:将自定义词库文件加入到IK的配置文件中
IK分词器。。(可以将分词器的文件**.txt放入到ngnix中)
5. 项目集成es (具体使用的时候需要根据文档来)
5.1 检索条件:
//通过api获取检索的数据。
//通过api获取检索的分析信息
es应用到项目中
1.商品的上架
es数组的扁平化处理
添加数据类型为:nested,拒绝扁平化处理