整理了开发中常用的几个API,方便复制粘贴,主要是懒得查。
索引API
Rest API官网文档:
www.elastic.co/guide/en/el…
1.创建索引
PUT /my-index
2.删除索引
DELETE /my-index
数据API
Rest API官网文档:
www.elastic.co/guide/en/el…
Java官网文档:
www.elastic.co/guide/en/el…
1.新增数据
POST my-index/_doc
{
"name": "Will_Liao"
}
User user = new User();
user.setId(1);
user.setName("Will_Liao")
IndexRequest request = new IndexRequest(“my-index”);
request.id(user.getId());
request.type("doc");
String jsonString = JSON.toJSONString(user);
request.source(jsonString, XContentType.JSON);
request.opType(DocWriteRequest.OpType.CREATE);
try {
IndexResponse indexResponse = esClient.index(request, RequestOptions.DEFAULT);
} catch (Exception e) {
}
2.删除数据
DELETE my-index/_doc/id
{
}
DeleteRequest deleteRequest = new DeleteRequest("my-index", "doc", user.getId());
try {
DeleteResponse deleteResponse = esClient.delete(
request, RequestOptions.DEFAULT);
} catch (Exception e) {
}
3.查询数据
POST my-index/_search
{
"bool": {
"must": [
{
"match": {
"name": "Will_Liao"
}
}
]
}
}
SearchRequest searchRequest = new SearchRequest("my-index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
queryBuilder.must(QueryBuilders.matchQuery("name", "Will_Liao"));
searchSourceBuilder.size(100);
searchSourceBuilder.timeout(TimeValue.timeValueMillis(500));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = esClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
if (hits == null) {
SearchHit[] searchHits = hits.getHits();
if (searchHits != null && searchHits.length > 0) {
for (SearchHit hit : searchHits) {
String sourceString = hit.getSourceAsString();
User user = JSON.parseObject(sourceString, User.class);
...
}
}
}
4.修改数据
POST my-index/_update/id
{
"name": "Will_Liao"
}
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("name", "Will_Liao");
UpdateRequest request = new UpdateRequest("my-index", "doc", user.getId())
.doc(jsonMap);
request.setRefreshPolicy(WriteRequest.RefreshPolicy.NONE);
request.retryOnConflict(3);
try {
UpdateResponse updateResponse = esClient.update(request, RequestOptions.DEFAULT);
} catch (Exception e) {
}
5.条件更新
POST my-index/_update_by_query
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "Will_Liao"
}
}
]
}
},"script": {
"source":"ctx._source['name']=test;"
}
}
UpdateByQueryRequest request = new UpdateByQueryRequest("my-index");
BoolQueryBuilder queryBuilder = boolQuery();
queryBuilder.must(QueryBuilders.matchQuery("name", "Will_Liao"));
request.setScript(new Script("ctx._source['name']=test"));
request.setQuery(queryBuilder);
request.setRefresh(true);
try {
BulkByScrollResponse bulkResponse =
esClient.updateByQuery(request, RequestOptions.DEFAULT);
long updatedDocs = bulkResponse.getUpdated();
} catch (Exception e) {
}
6.条件删除
POST my-index/_delete_by_query
"query": {
"bool": {
"must": [
{
"match": {
"name": "Will_Liao"
}
}
]
}
}
}
DeleteByQueryRequest request = new DeleteByQueryRequest("my-index");
BoolQueryBuilder queryBuilder = boolQuery();
queryBuilder.must(QueryBuilders.matchQuery("name", "Will_Liao"));
request.setQuery(queryBuilder);
request.setRefresh(true);
try {
BulkByScrollResponse bulkResponse =
esClient.deleteByQuery(request, RequestOptions.DEFAULT);
long deletedDocs = bulkResponse.getDeleted();
} catch (Exception e) {
}
7.游标
Rest API官网文档:
www.elastic.co/guide/en/el…
Java官网文档:
www.elastic.co/guide/en/el…
Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L));
SearchRequest searchRequest = new SearchRequest("my-index");
searchRequest.scroll(scroll);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
if (user.getName() != null) {
queryBuilder.must(QueryBuilders.matchQuery("name", user.getName()));
}
searchSourceBuilder.size(1000);
searchSourceBuilder.query(boolQueryBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = esClient.search(searchRequest, RequestOptions.DEFAULT);
if(searchResponse != null) {
String scrollId = searchResponse.getScrollId();
SearchHit[] searchHits = searchResponse.getHits().getHits();
while (searchHits != null && searchHits.length > 0) {
for (SearchHit hit : searchHits) {
String sourceString = hit.getSourceAsString();
User user = JSON.parseObject(sourceString, User.class);
...
}
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(scroll);
searchResponse = esClient.scroll(scrollRequest, RequestOptions.DEFAULT);
scrollId = searchResponse.getScrollId();
searchHits = searchResponse.getHits().getHits();
}
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.addScrollId(scrollId);
videoEsClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
}
聚合API
1.Rest API官网文档:
www.elastic.co/guide/en/el…
Java官网文档:
www.elastic.co/guide/en/el…
1.分组
POST my-index/_search
{
"query": {
"match": {
"match_all": {}
}
},"aggs": {
"by_name": {
"terms": {
"field": "name"
}
}
}
}
SearchRequest searchRequest = new SearchRequest("my-index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.aggregation(AggregationBuilders.terms("by_name").field("name"));
searchSourceBuilder.size(0);
searchSourceBuilder.timeout(TimeValue.timeValueMillis(500));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = esClient.search(searchRequest, RequestOptions.DEFAULT);
if (searchResponse != null) {
Terms byNameAggregation = searchResponse.getAggregations().get("by_name");
for (Terms.Bucket buck : byNameAggregation.getBuckets()) {
String key = buck.getKey();
long count = buck.getDocCount();
}
}
2.统计
POST my-index/_search
{
"query": {
"match": {
"match_all": {}
}
},"aggs": {
"max_age": {
"max": {
"field": "age"
}
}
}
}
SearchRequest searchRequest = new SearchRequest("my-index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
MaxAggregationBuilder max_age = AggregationBuilders.max("max_age").field("age").missing(0);
searchSourceBuilder.aggregation(max_age);
searchSourceBuilder.size(0);
searchSourceBuilder.timeout(TimeValue.timeValueMillis(500));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = esClient.search(searchRequest, RequestOptions.DEFAULT);
if (searchResponse != null) {
Max max_age_term = searchResponse.getAggregations().get("max_age");
double maxAge = max_age_term.getValue();
}