ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

elasticsearch入门

2022-08-25 20:35:09  阅读:180  来源: 互联网

标签:127.0 http 9200 0.1 phone elasticsearch 请求 入门


1.HTTP操作

  1. 幂等性和非幂等性的概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果。在REST风格的请求中,GET,PUT,DELETE都是幂等性操作,而POST不是。

1.索引操作

  1. 创建索引:创建索引等同于在关系型数据库中的创建数据库。
// 请求方式使用PUT,创建一个名称叫做phone的索引
http://127.0.0.1:9200/phone

{
    "acknowledged": true,  // 响应结果
    "shards_acknowledged": true,// 分片结果
    "index": "phone"  // 索引名称
}
  1. 查看所有索引
// 请求方式使用GET
http://127.0.0.1:9200/_cat/indices?v

// 
health status index    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   phone    FmPm9Ca5QpqP4Pl82rFd5g   1   1          0            0       208b           208b
  1. 查看单个索引
// 请求方式使用GET,查看名称为phone的索引
http://127.0.0.1:9200/phone
  1. 删除索引
// 请求方式使用DELETE,删除名称为phone的索引
http://127.0.0.1:9200/phone

2.文档操作

  1. 创建文档:文档等同于关系型数据库中的表数据,添加的数据格式为JSON格式。
// 请求方式使用POST
http://127.0.0.1:9200/phone/_doc
请求体内容为json字符串:
{
 "title":"小米手机",
 "category":"小米",
 "images":"http://www.gulixueyuan.com/xm.jpg",
 "price":3999.00
}

// 创建文档时指明文档唯一性标识,即ID
// 请求方式使用POST或者PUT
http://127.0.0.1:9200/phone/_doc/001
  1. 查看文档:查看文档时需要指明文档的唯一性标识
// 请求方式使用GET
http://127.0.0.1:9200/phone/_doc/001
  1. 修改文档
// 和创建文档一样,请求方式使用POST,请求体发生变化
http://127.0.0.1:9200/phone/_doc/001
  1. 修改字段:修改某一条数据的局部信息
# 修改华为手机的单价为4999
# 发送post方式的请求,请求体内容如下
{ 
 "doc": {
 "price":3000.00
 } 
}


http://127.0.0.1:9200/phone/_update/001
  1. 删除文档
请求方式使用DELETE
http://127.0.0.1:9200/phone/_doc/001
  1. 条件删除文档:根据条件对多条数据进行删除
请求方式使用POST
请求体如下:
{
    "query": {
        "match":{
            "price":4000.00  // price为查询的字段
        }
    }
}

http://127.0.0.1:9200/shopping/_delete_by_query

3.映射操作

索引库等于有了数据库的database,创建索引库中的映射等同于数据库中的表结构。

  1. 创建映射
请求方式使用PUT
请求体如下
{
 "properties": {
    "name":{
    "type": "text",
    "index": true //表示是否索引默认为true。字段会被索引,则可以用来进行搜索
    },
     "sex":{
     "type": "text",
     "index": false
     },
     "age":{
     "type": "long",
     "index": false
     }
 }
}

http://127.0.0.1:9200/student/_mapping
  1. 查看映射
请求方式使用GET
http://127.0.0.1:9200/student/_mapping
  1. 索引映射关联
请求方式使用PUT
请求体如下:
{
 "settings": {},
 "mappings": {
     "properties": {
        "name":{
         "type": "text",
         "index": true
         
        },
        "sex":{
         "type": "text",
         "index": false
        },
        "age":{
         "type": "long",
         "index": false
        }
    }
 }
}

http://127.0.0.1:9200/student1

4.高级查询

  1. 查询所有文档
请求方式使用GET
请求体如下:
{
    "query":{
        "match_all":{
            
        }
    }
}
http://127.0.0.1:9200/student/_search
  1. 匹配查询
请求方式使用GET
请求体如下:
{
    "query":{
        "match": {
            "name":"zhangsan" // 匹配name为zhangsan的
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 字段匹配查询
请求方式使用GET
请求体如下:
{
    "query": {
        "multi_match": {
            "query": "zhangsan",
            "fields":["name","nickname"]
        }
    }
}
http://127.0.0.1:9200/student/_search
  1. 关键字精确查询:term 查询,精确的关键词匹配查询,不对查询条件进行分词。
请求方式使用GET
请求体如下:
{
    "query": {
        "term": {
            "name":{
                "value":"lisi"  // 查询name为lisi的
            }
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 多关键字精确查询:terms 查询和 term 查询一样,但它允许你指定多值进行匹配。
请求方式使用GET
请求体如下:
{
    "query": {
        "terms": {
            "name":["zhangsan","lisi"] // name为zhangsan,lisi都查询出来
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 指定查询字段
请求方式使用GET
请求体如下:
{
    "_source": ["name","nickname"], //只想获取name,nickname两个字段
    "query": {
        "terms": {
        "nickname": ["zhangsan"]
        }
    }

}
http://127.0.0.1:9200/student/_search
  1. 过滤字段
请求方式使用GET
请求体如下:
{
    "_source":{
        //includes指定要显示的字段
        //excludes指定不想要显示的字段
        "includes":["name","nickname"],
        "excludes":["sex","age"] 
    },
    "query": {
        "terms":{
            "nickname":["zhangsan"]
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 组合查询:bool把各种其它查询通过must(必须)、must_not(必须不)、should(应该)的方式进行组合
请求方式使用GET
请求体如下:
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name":"zhangsan"
                    }
                }
            ],
            "must_not":[
                {
                    "match":{
                        "age":40
                    }
                }
            ],
            "should":[
                {
                    "match":{
                        "sex":"男"
                    }
                }
            ]
        }
    }
}
  1. 范围查询:range 查询找出那些落在指定区间内的数字或者时间

2.JavaAPI相关操作

参考

标签:127.0,http,9200,0.1,phone,elasticsearch,请求,入门
来源: https://www.cnblogs.com/xiaocer/p/16625589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有