Elasticsearch入常用RESTful API总结

RESTful API HTTP动词介绍

对于资源的具体操作类型,由HTTP动词表示。

常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
  • DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

  • HEAD:获取资源的元数据。
  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

下面是一些例子。

  • GET /zoos:列出所有动物园
  • POST /zoos:新建一个动物园
  • GET /zoos/ID:获取某个指定动物园的信息
  • PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
  • PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
  • DELETE /zoos/ID:删除某个动物园
  • GET /zoos/ID/animals:列出某个指定动物园的所有动物
  • DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

ES常用RESTful API介绍

ES为开发者提供了非常丰富的基于Http协议的Rest API,通过简单的Rest请求,就可以实现非常强大的功能

  • 查询集群健康信息
GET /_cat/health?v
#通过下面的请求可以查看返回结果各字段的意义:
GET /_cat/health?help
  • 查看集群中节点信息
GET /_cat/nodes?v
  • 查看集群中索引信息
GET /_cat/indices?v
  • 创建索引
PUT /indexname

该指令使用默认的配置创建了一个索引,也可以通过指定相关配置信息来创建索引,参考下面的指令

PUT indexname
{
    "settings": {
        "number_of_replicas": "1", 
        "number_of_shards": "5",
        "analysis": {
          "analyzer": {
            "default": { 
              "type": "custom",
              "tokenizer": "ik_max_word", 
              "filter": ["stemmer"]
            }
          }
        }
    },
    "mappings": {
        "properties": {
          "name": {
            "type": "text",
            "store": false,  
            "analyzer": "default", 
            "search_analyzer": "default", 
            "boost": 1 
          },
          "date": {
            "type": "date",
            "format": "yyyy-MM-dd" 
          },
          "age": {
            "type": "integer"
          },
          "innertypename": { 
            "properties": {
              "address": {
                "index": false,
                "type": "keyword" 
              }
            }
          }
        }
    }
  }
  
  

index 有三个索引值:

  • analyzed
    首先分析字符串,然后索引它。换句话说,以全文索引这个域。
  • not_analyzed
    索引这个域,所以它能够被搜索,但索引的是精确值。不会对它进行分析
  • no
    不索引这个域。这个域不会被搜索到。

在6.x+版本里会有bug Failed to parse value [not_analyzed] as only [true] or [false] are allowed
在stackoverflow.上倒是有解决方案,连接如下:

change elasticsearch mapping

官方文档上也有说明:Elasticsearch Reference [6.4] » Analysis » Analyzers » Keyword Analyzer

大致说的是现在index这个只能用true或者false了,如果想要不被分词就把数据类型设置为keyword

扫描二维码关注公众号,回复: 11308211 查看本文章

分词相关配置可参考官方地址
Mapping映射参数参考地址

  • 创建只有一个主分片,没有复制分片的小索引

    PUT /indexname
    {
      "settings": {
      "number_of_shards" : 1,
      "number_of_replicas" : 0
      }
    }
    
  • 用 update-index-settings API 动态修改复制分片个数:

   
   PUT /indexname/_settings
   {
     "number_of_replicas": 1
   }
  • 删除索引
DELETE /indexname
#删除多个索引
DELETE /index_one,index_two
DELETE /index_*
删除多个索引
DELETE /_all
  • 查看索引信息
GET indexname?pretty
  • 查看_mapping
GET indexname/_mapping?pretty
  • 创建索引Mapping信息
PUT indexname/_mapping
{
  "_doc": { 
      "properties": {
        "name": {
          "type": "string",
          "index": false
        },
        "age": {
          "type": "integer"
        }
      }
    }
  }
  • 删除索引Mapping信息
DELETE indexname

更多操作参考

猜你喜欢

转载自blog.csdn.net/agonie201218/article/details/106640012