如有笔误,欢迎留言指正或讨论!

数据格式

端口号:

  • 9300 对内使用
  • 9200 对外使用

ES是面向 文档 数据库,一条数据在这里就是一个文档。


对应类型

这里Type 相当于表,type的概念已经被弱化,在es6.0中,一个 Index 下已经只能包含一个Type,在es7.X中,Type 的概念已经被删除了;

ES Index(索引) Type(类型) Document(文档) Fields(字段)
Mysql 数据库 表名

倒排索引:按照 Value 找 Key,Value 分词后关键字每个对应 Key

正排索引:按照 key 找 Value


索引

//ES 创建 Index 索引具有冥等性
创建索引 				请求地址:PUT     127.0.0.1:9200/索引

查看单个索引		 请求地址:GET    127.0.0.1:9200/索引

查看所有索引		 请求地址:GET    127.0.0.1:9200/_cat/indices?v

删除索引				请求地址:DELETE    127.0.0.1:9200/索引

索引文档

创建索引 --> 文档 	   请求地址:post    127.0.0.1:9200/索引/_doc/数据ID

搜索 单个 文档数据	 		请求地址:GET    127.0.0.1:9200/索引/_doc/数据ID

搜索 全部 文档数据	 		请求地址:GET    127.0.0.1:9200/索引/_search

删除 单个 文档数据	 		请求地址:DELETE    127.0.0.1:9200/索引/_doc/数据ID

更新索引 --> 文档  		 请求地址:post    127.0.0.1:9200/索引/_doc/数据ID
raw {
	"doc": {
        "name":"世界科技看韩剧卡号圣诞节喀什",
        "age":88888
    }
}

复杂查询

复杂查询文档数据				请求地址:GET   127.0.0.1:9200/_search

//条件查询
raw {
    //查询
    "query" : {
        //匹配查询
        // "match":{
        //     "name":"科技"
        // } 
        //全量查询
        "match_all" : {

        }
    },
    //页码
    "from" : 0,
    //条数
    "size" : 2,
    //可以过滤想要的数据字段
    "_source" : ["name"],
    //可以对某个字段进行排序:字段类型为数字
    "sort" : {
        "age" : {
            "order" : "desc"
        }
    }
}

//多个条件查询
raw {
  "query" : {
    //条件的意思
    "bool" : {
      //must : 代表多个条件 必须同时成立,类似于 AND
      //should: 代表多个条件 或成立,类似于 OR
      "should" : [
        {
          //匹配查询
          "match" : {
            "name" : "科技"
          }
        },
        {
          //匹配查询
          "match" : {
            "name" : "数据库"
          }
        }
      ],
      //范围查询
      "filter" : {
        "range" : {
          "age" : {
            "gt" : 10 //age gt(大于) 10 的数据
          }
        }
      }
    }
  }
}

全文匹配 & 完全匹配

条件查询文档数据				请求地址:GET   127.0.0.1:9200/_search

raw {
	"query" : {
        //全文匹配查询
				// "match" : {
				// 	"name" : "mysql数据库"
				// }
        //完全匹配查询
        "match_phrase" : {
   		    "name" : "数据"
        }
	},
    //高亮显示 : 就是查询的 name 条件数据添加特定样式,如下 :
  	//"爱神的箭看哈<em>数</em><em>据</em>库的"
    "highlight" : {
        "fields" : {
            "name" : {}
        }
    }
}

聚合查询

条件查询文档数据				请求地址:GET   127.0.0.1:9200/_search

raw {
    //聚合操作
    "aggs" : {
        //名称,随意起名
        // "ags_group" : {
        //     //分组:统计结果
        //     "terms" : {
        //         "field" : "age" //分组字段
        //     }
        // }
        "ags_avg" : {
            //平均值:统计结果
            "avg" : {
                "field" : "age" //分组字段
            }
        }
    },
    //不用原始数据,只展示聚合数据
    "size" : 0
}

映射关系

1、添加索引的映射关系:必须保证 索引已存在 或 创建好索引 !!!

2、添加索引 映射(_mapping) 属性:请求地址:GET   127.0.0.1:9200/king/_mapping
raw {
    //属性
     "properties" : {
         "name" : {
             "type" : "text", //text文本可以分词
             "index" : true //true 表示这个字段是可以索引查询的
         },
         "sex" : {
             "type" : "keyword", //keyword关键字表示不可以分词,只可以完整匹配
             "index" : true //表示这个字段是可以索引查询的
         },
         "tel" : {
             "type" : "keyword", //文本可以分词
             "index" : false //false 表示这个字段是不可以使用索引查询
         }
     }
}

3、添加索引 文档数据:		请求地址:PUT 127.0.0.1:9200/king/_doc/44444
raw {
  "name" : "小王",
  "sex" : "男生",
  "tel" : "123456"
}

4、可以开始查询 king 的文档数据:		请求地址:GET 127.0.0.1:9200/king/_search
raw {
  "query" : {
    "match" : {
      //"name" : "王"
      //"sex" : "男"
      "tel" : "123456"
    }
  }
}

单机 & 集群