首页 > 技术文章 > ES 语法

jxfy 2020-03-06 19:17 原文

1.索引
#mapping   定义索引类型  
 PUT s222
 {
  "settings":{
    "number_of_shards": 4,
    "number_of_replicas": 0
  },
"mappings": { "ww":{ "properties":{ "name":{ "type":"text" }, "phone":{ "type":"long" }, "db":{ "type":"text" } } } } }







# 查看分片
get s222



2.添加字段

PUT test/_mapping/ww
{
  "properties":{
    "qqq":{
      "type": "keyword",
      "index": false
    }
  }
}

 

 

2.放置数据
PUT axm/address/2
{
  "name":"yuanpeng",
  "age":210
  
}

3.更新数据
POST axm/address/1/_update
{
  "doc":{
      "age":"5"
  }
}

4.删除数据
    POST axm/address/_delete_by_query?q=tag1:1
4-2    
DELETE axm/address/5_updata

 


5.查看数据
1.查看索引-类型下,所有数据
    GET axm/address/_search    
    #查询
    GET axm/address/_search
    {
      "  query":{
        "match_all":{}
      }
    }
2#按照条件查询
    GET axm/address/_search?q=tag3:2
3#结构化查询
   
    GET axm/address/_search
    {
      "query":{
        "match":{
          "tag2":1
        }
      }
    }
4.#同一字段多条件查询
    GET axm/address/_search
    {
      "query":{
        "match":{
          "name":"yuanpeng 袁鹏"
        }
        }
    }
5#查询后排序
    GET axm/address/_search
    {
      "query":{
        "match_all":{}
      },
      "sort": [
        {
          "_score": {
            "order": "desc"
          }
        }
      ]
    }
    6。GET axm/address/_search
    {
      "query":{
        "match_all":{}
      },
      "from":0,
      "size":6
    }
7.

#布尔查询 两个及以上字段多条件查询  should(or) 
#must(and)
#must_not(not)
#查询名字是yuanpeng,或者tag6是4的 
GET axm/address/_search
{
  "query":{
    "bool": {
      "should": [
        {
         "match": {
           "name": "yuanpeng"
          }
         },
         {
          "match": {
            "tag6": 4
          }
         }
      ]
    }
  }
}


#查询tag6大于1的数据 gt(大于) gte(大于等于)
GET axm/address/_search
{
  
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "yuanpeng"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 17
          }
        }
      }
    }
  }
}



#高亮查询
GET axm/address/_search
{
  "query": {
    "match": {
      "name": "yuanpeng"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}
GET axm/address/_search
{
  "query": {
    "match": {
      "name": "小王"
    }
  },
  "highlight": {
    "pre_tags": "<b style='color:red'>" ,
    "post_tags":"</b>", 
    "fields": {
      "name": {}
    }
  }
}
#结果过滤------多项可存储在列表中
GET axm/address/_search
{
  "query": {
    "match": {
      "name": "yuanpeng"
    }
  },
  "_source": ["name","age"]  
}
#聚合查询 查询叫yuanpeng的年龄总和
#sum
GET axm/address/_search
{
  "query": {
    "match": {
      "name": "yuanpeng"
    }
  },
  "aggs": {     
    "my_sum": {
      "sum": {
        "field": "age"
      }
    }
  }
  
} 




#max  名字叫做yuanpeng的最大的年龄
GET axm/address/_search
{
  "query":{
    "match":{
      "name":"yuanpeng"
    }
  },
  "aggs":{
    "my_max":{
      "max":{
        "field":"age"
      }
    }
  }
}

#min  address下面的最小的年龄
GET axm/address/_search
{
  "aggs": {
    "my_min": {
      "min": {
        "field":"age"  
        }
    }
  }
}

#求平均 avg
GET axm/address/_search
{
  "query": {
    "match": {
      "name": "yuanpeng"
    }
  },
  "aggs": {
    "my_avg": {
      "avg": {
        "field": "age"
      }
    }
  }
}
DELETE axm/address/5_updata


#分组,根据年龄 10-20  20-30  30-40  分组
GET axm/address/_search
{
  "aggs": {
    "my_group": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "from": 0,
            "to": 3
          },
          {
            "from": 3,
            "to": 9
          },
          {
            "from": 9,
            "to": 20
          },
          {
            "from": 20,
            "to": 300
          }
        ]
      }
    }
  }
}


#按照年龄分组,并每组求和
GET axm/address/_search
{
  "query": {
    "match": {
      "name": "yuanpeng"
    }
  },
  "aggs": {
    "grop": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "from": 0,
            "to": 2
          },
          {
            "from": 2,
            "to": 4
          },
          {
            "from": 4,
            "to": 7
          },
          {
            "from":7,
            "to": 300
          }
        ]
      },
      "aggs": {
        "my_sum": {
          "sum": {
            "field": "age"
          }
        }
      }
    }
  }
}

 

 

 

推荐阅读