增删改查

  1. # 新增索引
  2. PUT /索引名称
  3. {
  4. "settings": {
  5. "refresh_interval": "-1"
  6. },
  7. "mappings": {
  8. "properties": {
  9. "location": {
  10. "type": "geo_point"
  11. },
  12. "date": {
  13. "type": "date",
  14. "format": "yyyy-MM-dd"
  15. }
  16. }
  17. }
  18. }
  19. # 新增索引ID是系统生成
  20. POST /索引名称/_doc/
  21. {
  22. "a": 1,
  23. "b": 2
  24. }
  25. # 新增索引ID是1,修改也是通过这种方式
  26. POST /索引名称/_doc/1
  27. {
  28. "a": 1,
  29. "b": 2
  30. }
  31. # 删除索引
  32. DELETE /索引名称/_doc/1

聚合分组查询

GET /索引名称/_search
{
  "size": 0,
  "aggs": {
    "groupDate": {
      "date_histogram": {
        "field": "create_date",
        "interval": "day",
        "format": "yyyy-MM-dd"
      }
    }
  }
}

# 时间分割不同 _search 分为 Query阶段,Fetch阶段
GET /索引名称/_search
{
  "size": 0,
  "aggs": {
    "groupDate": {
      "date_histogram": {
        "field": "create_date",
        "interval": "90m",
        "format": "yyyy-MM-dd"
      }
    }
  }
}

统计某个字段出现的次数

统计某字段出现的次数
{
  "aggs": {
    "field": {
      "terms": {
        "field": "wenshuNum",
        "size": 50
      }
    }
  }
}



SELECT DISTINCT(user_id) FROM table WHERE user_id_type = 3;


{
  "query": {
    "term": {
      "user_id_type": 3
    }
  },
  "collapse": {
    "field": "user_id"
  }
}



SELECT COUNT(DISTINCT(user_id)) FROM table WHERE user_id_type = 3;
{
  "query": {
    "term": {
      "user_id_type": 3
    }
  },
  "aggs": {
    "count": {
      "cardinality": {
        "field": "user_id"
      }
    }
  }


SELECT COUNT(user_id) FROM table GROUP BY user_id_type;
{
  "aggs": {
    "user_type": {
      "terms": {
        "field": "user_id_type"
      }
    }
  }
}


SELECT COUNT(DISTINCT(user_id)) FROM table GROUP BY user_id_type;

{
  "aggs": {
    "user_type": {
      "terms": {
        "field": "user_id_type"
      },
      "aggs": {
        "count": {
          "cardinality": {
            "field": "user_id"
          }
        }
      }
    }
  }
}



根据某个地理地址统计
GET sports/_search
{
  "size": 0,
  "aggregations": {
    "baseball_player_ring": {
      "geo_distance": {
        "field": "location",
        "unit": "km", 
        "origin": {
          "lat": 46.12,
          "lon": -68.55
        },
        "ranges": [
          {
            "from": 0,
            "to": 300
          }
        ]
      }
    }
  }
}




根据某个字段统计取前多少条
GET sports/_search
{
  "size": 0,
  "aggs": {
    "sport": {
      "terms": {
        "field": "sport.keyword",
        "size": 3
      }
    }
  }
}



根据某个字段进行统计
GET sports/_search
{
  "size": 0,
  "aggs": {
    "sport_count": {
      "value_count": {
        "field": "sport.keyword"
      }
    }
  }
}

查询结果

优化部分