Elasticsearch索引创建与搜索

目录

ES的创建索引

ES的插入

ES的搜索

ES的全文搜索

ES的过滤搜索


ES的创建索引

cpp 复制代码
POST /user/_doc 
{
  "settings": {   配置索引级别参数
    "analysis": {   配置文本分析器
      "analyzer": {   定义分词器类型
        "ik": {   ik就是采用中文分词器
            "tokenizer": "ik_max_word"  IK分词器的最大粒度模式
        }
      }
    }
  },
  "mappings": {    定义索引的映射
    "dynamic": true,  允许自动添加新字段,这个字段照着写就完事了
    "properties": {   //这个里面的就是所有字段,包括可匹配项和不可匹配项
      "昵称": {  字段         
        "type": "text", 关键字字段类型, text就是文本类型就是string,会被分词,支持全文搜索
        "analyzer": "ik_max_word"  使用上面定义的 ik 分词器
      },
      "用户ID": {         
        "type": "keyword",  关键字类型,就是string,不分词,整体匹配
        "analyzer": "standard" 使用默认的标准分词器
      },
      "手机号": {         
        "type": "keyword",
        "analyzer": "standard"
      },
      "描述": {           
        "type": "text",
        "enabled": false  禁用该字段!不会被索引,也不能被搜索,仅存储
      },
      "头像ID": {         
        "type": "keyword",
        "enabled": false  
      }
    }
  }
}

创建索引及关键字时使用POST /user/_doc 进行post请求 /user是自定义索引名,/_doc是索引类型,都这么写的。

ES的插入

cpp 复制代码
POST /user/_doc/_bulk  最后一个/_bulk是批量插入的标记,如果只插入一条就不用了
{"index":{"_id":"1"}}  先插入一个id作为index
{"user_id":"USER4b862aaa-2df8654a-7eb4bb65e3507f66","nickname":"昵称1","phone":"13800000001","description":"签名1","avatar_id":"头像1"} //到这里算一条信息
{"index":{"_id":"2"}}
{"user_id":"USER14eeeaa5-442771b9-0262e455e4663d1d","nickname":"昵称2","phone":"13800000002","description":"签名2","avatar_id":"头像2"}
{"index":{"_id":"3"}}
{"user_id":"USER484a6734-03a124f0-996c169dd05c1869","nickname":"昵称3","phone":"13800000003","description":"签名3","avatar_id":"头像3"}
{"index":{"_id":"4"}}
{"user_id":"USER186ade83-4460d4a6-8c08068f83127b5d","nickname":"昵称4","phone":"13800000004","description":"签名4","avatar_id":"头像4"}
{"index":{"_id":"5"}}
{"user_id":"USER6f19d074-c33891cf-23bf5a8357189a19","nickname":"昵称5","phone":"13800000005","description":"签名5","avatar_id":"头像5"}
{"index":{"_id":"6"}}
{"user_id":"USER97605c64-9833ebb7-d045535335a59195","nickname":"昵称6","phone":"13800000006","description":"签名6","avatar_id":"头像6"}

KV形式的插入,中间用,隔开其中不可以换行。

ES的搜索

ES的全文搜索

cpp 复制代码
POST /user/_doc/_search 
{
  "query": {  查询的根对象,所有查询条件都放在里面
    "match_all": {}  匹配所有文档,没有过滤条件
  }
}

ES的过滤搜索

cpp 复制代码
POST /user/_doc/_search?pretty
{
  "query": {
    "bool": {   bool查询组合多个查询条件
      "must_not": [  严格不可匹配项
        {
          "terms": {    多值精确匹配,匹配项如下
            "user_id.keyword": [ 不可匹配中的字段,加上keyword防止其内容分词导致不严格
              "USER4b862aaa-2df8654a-7eb4bb65e3507f66",
              "USER14eeeaa5-442771b9-0262e455e4663d1d",
              "USER484a6734-03a124f0-996c169dd05c1869"
            ]
          }
        }
      ],
      "should": [  可选匹配项,任意一个字段匹配或者模糊匹配上就可以
        {
          "match": {  匹配字段
            "user_id": "昵称"
          }
        },
        {
          "match": {
            "nickname": "昵称"
          }
        },
        {
          "match": {
            "phone": "昵称"
          }
        }
      ]
    }
  }
}
相关推荐
1104.北光c°6 天前
深入浅出 Elasticsearch:从搜索框到精准排序的架构实战
java·开发语言·elasticsearch·缓存·架构·全文检索·es
曲幽18 天前
FastAPI + PostgreSQL 实战:给应用装上“缓存”和“日志”翅膀
redis·python·elasticsearch·postgresql·logging·fastapi·web·es·fastapi-cache
一叶飘零_sweeeet2 个月前
ELK 搭建实战:从 0 到 1 打通日志收集、分析与可视化
elk·kibana·es·logstash
CoLiuRs2 个月前
语义搜索系统原理与实现
redis·python·向量·es
Linux蓝魔2 个月前
mysql-redis-kafka-es-ngnix安装调试
linux·服务器·mysql·kafka·es
张彦峰ZYF2 个月前
探索数据的力量:Elasticsearch中指定链表字段的统计查询记录
搜索引擎·性能优化·es
_oP_i2 个月前
Elasticsearch 在 Windows安装
es
码界奇点3 个月前
灵活性与高性能兼得KingbaseES 对 JSON 数据的全面支持深度解析
数据库·json·es