安装:
1.解压安装包
2.运行bin目录下的Elasticsearch .bat文件
3.浏览器输入http://localhost:9200 访问
注意:9300 端口为 Elasticsearch 集群间组件的通信端口
9200 端口为浏览器访问的 http协议 RESTful 端口。
Elasticsearch 支持分布式,rest(缩写:资源状态转换)ful风格的搜索和分析
ES中数据发送与数据返回以json为标准格式
jason(javaScript Object Notation):特殊标记的js对象
var obj = { " " : " " }
var objs = [ obj,obj ] //集合
正排索引:
id 设为主键,通过id查索引信息
比如:查文章中有哪些热门词汇,就要模糊查询,比较麻烦 ,每条数据都要进行遍历
查询的大小写,时态等待都会影响查询的准确率
倒排索引:
id 保持不变,让关键字与文章的ID进行关联,
也就是通过关键字来查询主键ID,然后再关联文章内容
索引操作
先创建索引,才能访问数据
对比关系型数据库,创建索引就等同于在 Postman 中创建数据库
向 ES 服务器发 PUT 请求:http://127.0.0.1:9200/shopping
注:
put具有幂等性,再次发送引起线程冲突,不允许
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。
post:没有幂等性,两次操作可能结果不一样
get:获取索引的相关信息
delete:删除索引
http://127.0.0.1:9200/_cat/indices?v 所以整体含义就是查看当前 ES 服务器中的所有索引,就好像 MySQL 中的 show tables
-cat:查询
indice:表示索引
服务器响应结果如下:
创建:
put :http://127.0.0.1:9200/shopping/_doc/1001
只能使用put,put每一次都生成数据,所以put不是幂等性的
1001,自定义主键,默认是随机生成的
再put,中传入json字符串
查询:
get: http://127.0.0.1:9200/shopping/_doc/1001 单条
get :http://127.0.0.1:9200/shopping/_search 全查
修改:
完全覆盖:无论发送多少次请求,结果都一样,是幂等性的,所以可以使用put
put:http://127.0.0.1:9200/shopping/_doc/1001
{
"title":"小米手机",
"category":"小米",
"images":"http://www.gulixueyuan.com/xm.jpg",
"price":3999.0
}
局部修改:局部更新就说明,每一次的结果不一定是相同的,不具有幂等性,可以用post
post :http://127.0.0.1:9200/shopping/_update/1001
{
"doc":{
"title":"华为手机"
}
} 删除:
delete:http://127.0.0.1:9200/shopping/_doc/1001
条件查询&&分页查询:
条件查询:
get:http://127.0.0.1:9200/shopping/_search?q=category:小米
上面是请求路径,更方便的是请求体 在body中写入请求
get:http://127.0.0.1:9200/shopping/_search
{
"query" : {
"match" : {
"category":"小米"
}
}
}
{
"query" : {
"match_all" : {
}
}
}
分页查询:
{
"query" : {
"match_all" : {
}
},
"from" : 0,
"size" : 2,
"_source" : ["title"]
"sort" : {
"price" : "desc"
}
}
多条件查询&&范围查询:
must:类似and
should:类似or
{
"query" : {
"bool" : {
"must" :[
{
"match" : {
"category" : "小米"
}
},
{
"match" : {
"price" : "3999"
}
}
],
"filter" : {
"range" : {
"price" : {
"gt" : 5000
}
}
}
}
}
全文检索&&完全匹配&&高亮查询
使用文字的一部分也是可以查询的,
当保存文档数据时,ES会对数据文字进行分词拆解操作,将拆解后的数据保存到==倒排==索引数据当中
所以,部分文字也是可以查询的,这种方式称为全文检索,比如:“小华”可以匹配到“华为”
{
"query" : {
"match_phrase" : {
"category" : "大米"
}
},
"highlight" : {
"fields" : {
"category" : {}
}
}
}
聚合查询:
{
"aggs" : {
"price_avg" : {
"avg" : {
"field" : "price"
}
}
},
"size" : 0
}
映射关系:
映射数据说明:
{
"properties" :{
"name":{
"type" : "text",
"index" : true
},
"sex" :{
"type" : "keyword",
"index" : true
},
"tel" :{
"type" : "keyword",
"index" : false
}
}
}
*******************************
|