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格式来撰写上传文档内容

 

posted @ 2022-07-29 15:15  jason47  阅读(147)  评论(0编辑  收藏  举报