elasticsearch 初步使用经常使用语法总结(依据官方文档)

GET /_cat/health?v  查看健康状态  ?v 显示字段名javascript

GET /_cat/nodes?v  查看节点状况java

GET /_cat/indices?v   查看索引node

PUT /customer?pretty 添加名为customer的索引json

添加数据:数组

PUT /customer/doc/1?pretty    为customer 添加标识为1的文档,内容为"name":"John doe"  pretty打印响应json
{
  "name": "John Doe"
}
若是客户索引事先不存在,则Elasticsearch将自动建立索引。标识同理。
POST /customer/doc?pretty  使用post将自动建立标识
{
  "name": "Jane Doe"
}
若屡次执行PUT /customer/doc/1?pretty,则提交的json内容将替换标识1下的文档
GET /customer/doc/1?pretty    查看customer索引下标识id为1的文档内容
DELETE /customer?pretty  删除customer索引

  更新:缓存

POST /customer/doc/1/_update?pretty  更新标识为1的文档,添加年龄字段
{
  "doc": { "name": "Jane Doe" ,"age":20}
}
POST /customer/doc/1/_update?pretty  简单脚本,年龄将增长5,ctx.source指即将更新的当前源文档(没有修改源文档)
{ 
  “script”:“ctx._source.age += 5” 
}

  批处理:post

POST /customer/doc/_bulk?pretty 更新一、2两篇文档
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
POST /customer/doc/_bulk?pretty更新文档1,删除文档2
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

  精确删除操做、排序spa

POST twitter/_delete_by_query    对匹配查询的每一个文档执行删除操做
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}_delete_by_query
GET /bank/_search?q=*&sort=account_number:asc&pretty 
q=*标识全部文档,sort=account_number:asc表示按照account_number进行排序
结果:
took - Elasticsearch执行搜索的时间(以毫秒为单位)
timed_out - 告诉咱们搜索是否超时
_shards - 告诉咱们搜索了多少个分片,以及搜索成功/失败分片的数量
hits - 搜索结果
hits.total - 符合咱们搜索条件的文档总数
hits.hits - 实际的搜索结果数组(默认为前10个文档)
hits.sort - 对结果进行排序键(若是按分数排序则丢失)
hits._score并max_score- 暂时忽略这些字段
GET /bank/_search         { "query": { "match_all": {} }, "sort": [ { "account_number": "asc" } ] }

  设置查找属性code

GET /bank/_search   
{
  "query": { "match_all": {} },
  "from": 10,   起始文档位置
  "size": 10  展现文档数量
}

  精确查找blog

GET /bank/_search
{
  “query”:{“match_all”:{}},
  “_source”:[“account_number”,“balance”]  只显示bank索引的account_number和balance对应字段
}

  精确匹配及模糊查找

GET / bank / _search
{
  “query”:{“match”:{“address”:“mill lane”}} 精确匹配“address”:“maill lane”
}
若要模糊匹配,则须要将“match”更换成“match_phrase”匹配词组

  多项匹配

GET / bank / _search / bank / _search 
{ 
  “query”:{ 
    “bool”:{      #bool与must配套使用
      “must”:[       
        {“match”:{“address” :“mill”}},
        {“match”:{“address”:“lane”}} 
      ] 
    } 
  }         
} 
#must 必须出如今文档中 must字句中match全部都必须为真
#filter 必须出如今文档中,忽略scor, filter 字句中全部match都必须为真
#should 字句应出如今文档中,bool中如有must或者filter子句, should中任何一个match匹配都视为匹配
#must_not 不得出如今匹配的文档。字句在过滤上下文中执行,忽略scor使用子句进行高速缓存。 全部match都不匹配

  

GET / bank / _search 
{ 
  “query”:{ 
    “bool”:{ 
      “must”:{“match_all”:{}}, 
      “filter”:{ 
        “range”:{   #范围
          “balance”:{  
            “gte”:20000,  #大于
            “lte”:30000    #小于
          } 
        } 
      } 
    } 
  } 
}

  

GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {   按状态对全部帐户分组
      "terms": {
        "field": "state.keyword"
      }
    }
  }
}
相似于SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC

  

GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_age": {    按年龄20-29 。。。分组 最后获得每一个年龄段的平均帐户余额
      "range": {
        "field": "age",
        "ranges": [
          {
            "from": 20,
            "to": 30
          },
          {
            "from": 30,
            "to": 40
          },
          {
            "from": 40,
            "to": 50
          }
        ]
      },
      "aggs": {
        "group_by_gender": {
          "terms": {
            "field": "gender.keyword",
	"order":{    #排序
    "average_balance":"desc"  
    }
          },
          "aggs": {
            "average_balance": {  基于组合进行计算
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
  }
}
相关文章
相关标签/搜索