Elasticsearch 索引、文档、搜索,删除基本使用
1.创建索引
PUT http://127.0.0.1:9200/test_index 返回 { "acknowledged": true, "shards_acknowledged": true, "index": "test_index" }
2.增加文档
创建文档 //如果不指定 id,则需要使用 POST 请求,不能使用 PUT 请求 POST /<target>/_doc/ //如果指定 id //URL中显示指定 _create ,此时如果改 ID 的文档已经存在,操作失败 PUT /<target>/_create/<_id> PUT /<target>/_doc/<_id> POST /<target>/_create/<_id>
例如:
POST http://127.0.0.1:9200/dl_log/_doc/ { "time":"2022-07-29 14:47:30", "detail":"which corresponds to second..." }
3.搜索
POST http://127.0.0.1:9200/dl_log/_search
//有些教程使用了GET,在Postman里能过去,估计是带body,Postman自动给修改了
//但代码里spring Template会将body扔掉,导致查询条件丢失,查询失败
{ "query":{ "match":{"detail" : "second"} }, "size":1 //如果不设置,默认值为10
//size must be less than or equal to: [10000].
//See the scroll api for a more efficient way to request large data sets.
//This limit can be set by changing the [index.max_result_window] index level setting.
} or搜索 { "query" : { "match":{"detail" : "second third" } } } and搜索 { "query" : { "bool":{ "must":[ {"match":{"detail" : "second"}}, {"match":{"detail" : "third" }} ] } } }
range范围
POST http://127.0.0.1:9200/dl_log/_search { "query": { "range": { "time.keyword": //注意搜索时间需要在字段后面加.keyword { "gte":"2022-08-04 00:00:00", "lte":"2022-08-04 23:00:00" } } } }
组合搜索
POST http://127.0.0.1:9200/dl_log/_search { "query": { "bool" : { "must": [ {"match":{"detail":"second"}}, {"match":{"detail":"third"}} ], "filter": { "range": { "time.keyword": { "gte":"2022-08-04 00:00:00", "lte":"2022-08-04 23:00:00" } } } } },
"size":10000,
"sort":
{
"time.keyword":
{
"order":"asc"
}
}
}
参数
参数 默认值 说明 q "" 用于指定要查询的字符串 lenient false 设置为 true 即可以忽略格式化错误 fields 用于筛选返回结果的字段 sort 可以使用这个参数来对结果进行排序 可能值有:fieldName,fieldName:asc 或 fieldname:desc
timeout 可以使用该参数来限制搜索的时间,如果超过了该时间则只返回该时间内匹配到的结果
默认为不限制
terminate_after 可以使用该参数来限制每个分片返回的文档数量,一旦达到则查询终止 默认情况下,不存在 terminate_after 参数
from 0 返回结果的偏移量 size 10 用于限制返回的结果数
4. 删除
POST http://127.0.0.1:9200/dl_log/_delete_by_query { "query": { "match": { "detail":"username" } } }//删除detail里带有username的所有文档
{ "query": { "range": { "time.keyword": { "gte":"2022-08-04 00:00:00", "lte":"2022-08-04 23:00:00" } } } }
5. curl命令
curl -H "Content-Type:application/json" -XPUT 'http://10.135.73.73:9201/index_name/_doc/1?pretty' -d \ '{ "name": "xuwl", "age": 18, "job": "Linux" }'
参数
-H:指定内容类型 -X:指定http请求方式,这里为PUT上传方式 http://10.135.73.73:9201:指定一台es服务器对外的http端口 /index_name:文档的索引名称,必须小写 /type_name:文档的类型名称,7.0开始一个索引只能创建一个Type ,即,“_doc” /1:文档的ID编号 ?pretty:人性化创建索引 -d:指定使用JSON方式来撰写上传文档 ‘{ "name": "xuwl", "age": 18, "job": "Linux" }' :使用JSON格式来撰写上传文档内容