es

  1. es入门
    注:1.7以后版本移除类型这个概念


    image.png

索引(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匹配检索

match

2.4 短语匹配(match_phrase)

如查 小梅是坏蛋。会把这个整句当成一个词来处理


match_phrase
match_phrase

2.5 多字段匹配 (multi_match)

multi_match 支持查询字段进行拆分 :如查小梅是坏蛋,会对这个词进行拆分


multi_match

2.6 复合查询语句( boll)

boll 包含3个,must notmust should
must: 必须满足的条件
notmust:过滤条件
should:应该满足条件:查出的结果集可以不必须包含这个。如果包含这个,则他的得分是在最前面的

bool
bool

must,should筛选条件,会参与计算得分。而filter不会参与计算贡献得分的


image.png

2.7term检索

image.png
image.png
image.png
如果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的平均薪资以及这个年龄段的总体平均薪资


image.png
image.png

最后总体结果:


image.png

3 Mapping

Mapping定义了一个文档应该被怎样处理,以及字段以什么类型进行处理。


image.png
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"
  }
}
'

image.png

image.png

4. 分词器

4.0 默认的分词器对中文都支持不好
4.1 IK分词器。
在es中的plugin中导入ik
4.2 自定义ik分词的词库
修改配置文件:将自定义词库文件加入到IK的配置文件中
IK分词器。。(可以将分词器的文件**.txt放入到ngnix中)


IK分词器的配置

5. 项目集成es (具体使用的时候需要根据文档来)

elasticsearch的选择

5.1 检索条件:

检索1

//通过api获取检索的数据。


获取检索的数据

//通过api获取检索的分析信息


获取检索的分析信息

es应用到项目中

1.商品的上架

1
2

3

4

5

es数组的扁平化处理
添加数据类型为:nested,拒绝扁平化处理


image.png

你可能感兴趣的:(es)