ElasticSearch语法

索引操作

查看集群中索引?

GET /_cat/indices?v

创建索引?

PUT /index?pretty

删除索引

DELETE /index?pretty

文档操作

新增文档

PUT /index/type/id
{
"json数据"
}

es默认会对document每个field都建立倒排索引,让其可以被搜索

查询文档

GET /index/type/id

修改文档

PUT /index/type/id
{
"json数据"
}

更新文档

POST /index/type/id/_update
{
"doc": {
"field":""
}
}

删除文档

DELETE /index/type/id

查询文档,默认返回前10条

GET /index/type/_search
{
"query": { "match_all": {} }
}

match 查询名称包含xxx的文档,并按价格降序排序

GET /index/type/_search
{
    "query" : {
        "match" : {
            "name" : "xxx"
        }
    },
    "sort": [
        { "price": "desc" }
    ]
}

match_phrase 短语搜索文档 要求输入的搜索词,必须在指定的字段文本中,完全包含一模一样的,才可以作为结果返回

GET /index/type/_search
{
    "query" : {
        "match_phrase" : {
            "producer" : "producer"
        }
    }
}

highlight 高亮搜索文档,会将搜索词高亮显示

GET /index/type/_search
{
    "query" : {
        "match" : {
            "producer" : "producer"
        }
    },
    "highlight": {
        "fields" : {
            "producer" : {}
        }
    }
}

分页查询文档

GET /index/type/_search
{
  "query": { "match_all": {} },
  "from": 1,
  "size": 1
}

指定某些字段查询文档


GET /index/type/_search
{
  "query": { "match_all": {} },
  "_source": ["name", "price"]
}

filter 过滤查询价格大于50的文档

GET /index/type/_search
{
    "query" : {
        "bool" : {
            "must" : {
                "match" : {
                    "name" : "xxx" 
                }
            },
            "filter" : {
                "range" : {
                    "price" : { "gt" : 50 } 
                }
            }
        }
    }
}

分组

GET /index/type/_search
{
  "aggs": {
    "group_by_orderName": {
      "terms": { "field": "orderName" }
    }
  }
}

对字符串类型聚合需要将field的fielddata属性设置为true

PUT /index/_mapping/type
{
  "properties": {
    "orderName": {
      "type": "text",
      "fielddata": true
    }
  }
}

平均值,分组后计算平均值

GET /index/type/_search
{
    "size": 0,
    "aggs" : {
        "group_by_orderName" : {
            "terms" : { "field" : "orderName" },
            "aggs" : {
                "avg_price" : {
                    "avg" : { "field" : "price" }
                }
            }
        }
    }
}

results matching ""

    No results matching ""