一、索引操作
创建索引
对比关系型数据库,创建索引就等同于创建数据库
在PostMan中,向ES服务器发PUT请求:http://127.0.0.1:9200/shopping
获取索引
在PostMan中,向ES服务器发GET请求:http://127.0.0.1:9200/shopping
localhost:9200/_cat/indices?v 获取所有索引详细信息
删除索引
在PostMan中,向ES服务器发DELETE请求:http://127.0.0.1:9200/shopping
二、文档操作
创建文档
在PostMan中,向ES服务器发POST请求:http://127.0.0.1:9200/shopping/_doc/1001
_doc代表创建的是文档,1001为创建数据的id,_doc改成_create也是生效的
body:
{
"title":"小米手机",
"category":"小米",
"images":"http://www.gulixueyuan.com/xm.jpg",
"price":3999.00
}
result:
{
"_index": "shopping",
"_id": "1001",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
查询文档:
在PostMan中,向ES服务器发GET请求:http://127.0.0.1:9200/shopping/_doc/1001
http://127.0.0.1:9200/shopping/_search 查询所有文档
全量修改文档:
http://127.0.0.1:9200/shopping/_doc/1001 在PostMan中,向ES服务器发PUT请求:http://127.0.0.1:9200/shopping/_doc/1001
局部修改文档:
在PostMan中,向ES服务器发POST请求:http://127.0.0.1:9200/shopping/_doc/1001http://127.0.0.1:9200/shopping/_update/1001http://127.0.0.1:9200/shopping/_doc/1001
{
"doc" :{
"title" : "华为手机"
}
}
删除文档:
在PostMan中,向ES服务器发DELETE请求:http://127.0.0.1:9200/shopping/_doc/1001
条件查询:
GET请求:http://127.0.0.1:9200/shopping/_search?q=category:小米
或者http://127.0.0.1:9200/shopping/_search
Body:
{
"query":{
"match" : {
"category" : "小米"
}
}
}
分页查询:
GET请求 http://127.0.0.1:9200/shopping/_search
Body:
{
"query":{
"match_all" : {
}
},
"from" : 0,
"size" : 2,
"_source" : ["title"]
}
查询排序:
GET请求 http://127.0.0.1:9200/shopping/_search
{
"query":{
"match_all" : {
}
},
"from" : 0,
"size" : 2,
"_source" : ["title"],
"sort":{
"price" : {
"order" : "desc"
}
}
}
多条件查询
GET请求:http://127.0.0.1:9200/shopping/_search
Must:
Body:
{
"query": {
"bool": {
"must": [
{
"match": {
"category": "小米"
}
},
{
"match": {
"price": 3999.00
}
}
]
}
}
}
Should:
{
"query": {
"bool": {
"should": [
{
"match": {
"category": "小米"
}
},
{
"match": {
"category": "华为"
}
}
]
}
}
}
范围查询:
GET请求:http://127.0.0.1:9200/shopping/_search
Body:
{
"query": {
"bool": {
"should": [
{
"match": {
"category": "小米"
}
},
{
"match": {
"category": "华为"
}
}
],
"filter": {
"range": {
"price": {
"gt": 2000
}
}
}
}
}
}
当category从”小米“改为”米“后,会发现还是能查询到数据,主要原因是因为保存文档数据的时候,ES会将数据文字进行分词拆解操作,并将拆解后的数据保存到倒排索引当中。这样即使使用一部分数据,也能查询到结果。这种检索方式称之为全文检索。
ES也会将查询条件进行分词再去倒排索引中进行匹配,如果条件改成”小华“之后,数据反倒会更多,因为”华为“和”小米“都会被检索到。
完全匹配&高亮查询:
GET请求:http://127.0.0.1:9200/shopping/_search
Body:
{
"query":{
"match_phrase":{
"category" : "小"
}
},
"highlight" : {
"fields" : {
"category" : {}
}
}
}
Response:
聚合查询:
GET:http://127.0.0.1:9200/shopping/_search
Body:
{
"aggs" : { //聚合操作
"price_proup":{ //名称,随意起名
"terms" : { //分组操作
"field" : "price" //分组字段
}
}
}
}
Result:
求平均值:
{
"aggs" : { //聚合操作
"price_avg":{ //名称,随意起名
"avg" : { //分组操作
"field" : "price" //分组字段
}
}
}
}
Result:
映射关系:
创建映射关系:
PUT:localhost:9200/user/_mapping
Body:
{
"properties": {
"name": {
"type": "text",
"index": true
},
"sex": {
"type": "keyword",
"index": true
},
"tel": {
"type": "keyword",
"index": false
}
}
}
Type为text代表可以分词匹配,keyword代表不能分词匹配,index代表可不可以被索引
查询映射关系
GET:localhost:9200/user/_mapping