elasticsearch 学习
elasticsearch 学习 https://www.cnblogs.com/qdhxhz/p/11493677.html
es 基础概念:
索引index: 案由相同属性的文档集合
类型type: 索引可以定义一个或多个类型,文档必须属于一个类型
文档document: 文档是可以被索引的基本数据单位
3者的关系类似(索引=数据库,类型=表,文档=数据)
分片: 每个索引都有多个分片,每个分片都是一个Lucene索引 (如果一个索引量很大,就需要分片)
备份: 拷贝一份分片就完成了分片的备份
es API
api基本格式: http:// <ip>:<port>/<索引>/<类型>/<文档id>
常用http动作词: GET/PUT/POST/DELETE
es 基本用法:
非结构化创建: 关键词 mappings:{} 空数据就是非结构化
结构化创建: (注: 7.x 移除type类型 都统一改为_doc)
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name": {
"type": "text"
},
"country": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
插入 post:
指定文档Id插入
url: http://127.0.0.1:9200/people/_doc/1
{
"name": "wali2",
"age": 40,
"country": "china",
"date": "2021-03-16"
}
自动产生文档id插入
url: http://127.0.0.1:9200/people/_doc/
{
"name": "wali2",
"age": 40,
"country": "china",
"date": "2021-03-16"
}
修改 post put:
直接修改文档:
url: http://127.0.0.1:9200/people/_doc/1/_update
{
"doc": {
"name": "谁是瓦力"
}
}
脚本修改文档:
url: http://127.0.0.1:9200/people/_doc/1/_update
{
"_index": "people",
"_type": "_doc",
"_id": "1",
"_version": 5,
"result": "updated",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 5,
"_primary_term": 1
}
删除 delete:
删除文档 请求方式:
http://127.0.0.1:9200/people/_doc/1
删除索引(也会删除数据)
http://127.0.0.1:9200/book
查询:
简单查询 get:
http://127.0.0.1:9200/people/_doc/CzNtOXgB1o6hJzpfqHGJ
_cat/count/people?v 查看数据条数
条件查询 post/get, 关键词query:
http://127.0.0.1:9200/people/_doc/_search
1.{
"query": {
"match_all": {} 返回全部数据
},
"from": 1, 起始返回数据
"size": 1 返回数据条数
}
2.{
"query": {
"match": {
"name": "wali2" 查询name包含wali2的数据
}
}
}
排序等.
聚合查询,关键词 aggs:
http://127.0.0.1:9200/people/_doc/_search
{
"aggs": {
"自定义聚合名称": {
"terms": {
"field": "age" 列名
}
}
}
}
计算
{
"aggs": {
"xxx": {
"stats": { min max
"field": "age"
}
}
}
}
高级查询:
子条件查询: 特定字段查询特定值
Query context
全文本查询 针对文本类型数据
模糊匹配(会查询ElasticSearch,入门两个关键词)
{
"query": {
"match": {
"title": "ElasticSearch入门"
}
}
}
习语匹配
把 match 改成 match_phrase 只查询 ElasticSearch入门
多个字段匹配
{
"query": {
"multi_match": {
"query": "瓦力",
"fields": ["author", "title"] 这两个字段中包含"瓦力"的
}
}
}
语法查询
查询包含 ElasticSearch 打发 / Python 的数据
{
"query": {
"query_string": {
"query": "(ElasticSearch AND 打发) OR Python"
}
}
}
查询"author", "title"中包含瓦力 或者 xxx
{
"query": {
"query_string": {
"query": "瓦力 OR xxx",
"fields": ["author", "title"]
}
}
}
字段级别查询 针对结构化数据,如数字,日期等
{ 查询年龄100的
"query": {
"term": {
"age": 100
}
}
}
{ 查询年龄大于10 且 小于200的数据(e 是等于包含)
"query": {
"range": {
"age": {
"get": 10,
"lte": 200
}
}
}
}
Filter context : 在查询中,只判断该文档是否满足条件,只有yes,no
{
"query": {
"bool": {
"filter": {
"term": {
"age": 100
}
}
}
}
}
复合条件查询: 以一定的逻辑组合子条件查询
elasticsearch 目录结构:
bin 启动文件目录
config 配置文件目录
elasticsearch.yml
# elasticsearch 和 head 可视化插件跨域问题 (启动不显示es)
http.cors.enabled: true
http.cors.allow-origin: "*"
# 集群配置
cluster.name: wali # 集群名字(集群名称是一样的)
node.name: master # 节点名称
node.master: true # master指挥官主节点
# 设置主机ip
network.host: 127.0.0.1
# 端口
http.port: 8200
# 设置主节点ip(就是主节点指挥官的ip)
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
lib 第三方库目录
modules 模块目录
plugins 第三方插件目录
head 插件(可视化插件):
颜色: 绿色(健康) 黄色(不健康) 红色(很差)

浙公网安备 33010602011771号