首页 > 其他分享 >ElasticSearch-API-Index的使用亲测

ElasticSearch-API-Index的使用亲测

时间:2023-06-07 15:03:06浏览次数:42  
标签:Index 12 http 9200 twitter 索引 API ElasticSearch curl


ElasticSearch-API-Index

索引创建API允许初始化一个索引。ElasticSearch对多重索引提供了支持,包括跨多个索引执行操作。每个索引在创建时可以让一个特定的设置项与其关联。

  • 最简单的方式创建索引
curl -XPUT ‘http://localhost:9200/twitter/'
  • 在创建索引的时候指定分片和副本数量,参数格式采用YAML格式
curl -XPUT ‘http://localhost:9200/twitter/‘ -d ‘
index:
  number_of_shards:3
  number_of_replicas:2
‘
  • 在创建索引的时候指定分片和副本数量参数,参数格式采用JSON格式
curl -XPUT ‘http://localhost:9200/twitter/‘ -d ‘{
  “settings”:{
      “index”:{
          “number_of_shards”:3,
          “number_of_replicas”:2
      }
  }
}’

或者简化为

curl -XPUT ‘http://localhost:9200/twitter’ -d ‘{
  “settings”:{
      “number_of_shards”:3,
      “number_of_replicas”:2
  }
}’

*请注意,你不需要在settings项中显示的指定index。

  • 索引创建API可以接受一个或者一组映射选项
curl -XPOST localhost:9200/test -d ‘{
  “settings”:{
      “number_of_shards”:1
  },
  “mappings”:{
      “type1”:{
          “_source”:{“enabled”:false},
          “preperties”:{
              “field1”:{“type”:”string”,
                      ”index”:”not_analyzed”
              }
          }
      }
  }
}’
  • REST风格的插入方式。
curl -XPOST http://localhost:9200/索引名称/索引类型/id -d JSON格式的参数

比如插入”twitter”的索引,并且索引类型为tweet

curl -XPUT ‘http://localhost:9200/twitter/tweet/1’ -d ‘{
  “user”:”kimchy”,
  “post_date”:”2012-12-12”,
  “message”:”trying out ElasticSearch!”
}’

添加成功后,其会返回操作状态,索引、类型、id等信息如上例中返回信息

{
  "ok" : true,
  "_index" : "twitter",
  "_type" : "tweet",
  "_id" : "1"
}
  • 每一个被索引的文档都会有一个版本号,被关联的版本号会作为index API的请求的响应信息一部分返回回来。因此,我们可以在对索引操作的时候,指定特定的版本号,操作对应版本的文档。例如
curl -XPUT ‘localhost:9200/twitter/tweet/1?version=2’ -d ‘{
  “message”:”elasticsearch now has versioning support,double cool!”
}’

*注意

  • op_type。索引操作也接受参数op_type,用来强制创建索引的操作。如果索引尚未建立的时候,可以接受这样的行为,但是当文档的缩影已经存在的时候,该操作会将失败。 下面是一个op_type参数的例子
curl -XPUT ‘http://localhost:9200/twitter/tweet/1?op_type=create’ -d ‘{
  “user”:”kimchy”,
  “post_date”:”2014-12-05T14:12:12”,
  “message”:”trying out Elastic Searche”
}’

另外的一种create方式

curl -XPUT ‘http://localhost:9200/twitter/tweet/1/_create’ -d ‘{
  “user”:”kimchy”,
  “post_date”:”2009-11-11T14:12:12”,
  “message”:”hello,world”
}’
  • 自动生成Id.在创建一个Index的操作中,如果没有指定id,系统将会自动地为其生成一个id.
curl -XPOST ‘http://localhost:9200/twitter/tweet/‘ -d ‘{
  “user”:”kimchy”,
  “post_date”:”2013-11-12T12:12:12”,
  “message”:”Hello,world”
}’

操作响应的结果如下

{
  “ok”:true,
  “_index”:”twitter”,
  “_type”:”tweet”,
  “_id”:”6a8ca01c-7896-48e9-81cc-9f70661fcb32”
}
  • 路由(Routing)。默认情况下,分片或路由是通过计算文档的hash值来控制的,为了更明确的控制值,送入路由器使用hash函数计算hash值的操作可以通过routing参数来控制。
curl -XPOST ‘http://localhost:9200/twitter/tweet?routing=kimchy’ -d ‘{
  “user”:”kimchy”,
  “post_date”:”2014-12-12T12:12:12”
}’
  • TTL。一个文档建立索引的时候,能够为其指定ttl。
curl -XPUT 'http://localhost:9200/twitter/tweet/1?ttl=86400000' -d '{
  "user": "kimchy",
  "message": "Trying out elasticsearch, so far so good?"
}'
curl -XPUT 'http://localhost:9200/twitter/tweet/1?ttl=1d' -d '{
  "user": "kimchy",
  "message": "Trying out elasticsearch, so far so good?"
}'
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
  "_ttl": "1d",
  "user": "kimchy",
  "message": "Trying out elasticsearch, so far so good?"
}'





测试过的语句:


1. 创建索引:相当于创建一个数据库


curl -XPUT 'http://192.168.8.98:9200/twitter/'


在创建索引的时候指定分片和副本数量,参数格式采用YAML格式


报错



3. 在创建索引的时候指定分片和副本数量参数,参数格式采用JSON格式



curl -XPUT 'http://192.168.8.98:9200/twitter1/' -d '{ 
  
 
  

      "settings":{ 
  
 
  

          "index" :{ 
  
 
  

              "number_of_shards":3, 
  
 
  

              "number_of_replicas":2 
  
 
  

          }




比如插入”twitter”的索引,并且索引类型为tweet



curl -XPUT 'http://192.168.8.98:9200/twitter/tweet/1' -d '{ 
  
 
  

      "user":"kimchy", 
  
 
  

      "post_date":"2012-12-12", 
  
 
  

      "message":"trying out ElasticSearch!" 
  
 
  

    }'


每一个被索引的文档都会有一个版本号,被关联的版本号会作为index API的请求的响应信息一部分返回回来。因此,我们可以在对索引操作的时候,指定特定的版本号,操作对应版本的文档。例如:



curl -XPUT '192.168.8.98:9200/twitter/tweet/1?version=1' -d '{ 
  
 
  

      "message":"elasticsearch now has versioning support,double cool!" 
  
 
  

    }'





*注意  1.版本控制完全是实时的,不会影响接近实时方面的查询操作。如果版本已经被提供了,那么操作执行检查所有的版本。 2.默认情况下,版本从1开始,自增因子为1。




op_type。索引操作也接受参数op_type,用来强制创建索引的操作。如果索引尚未建立的时候,可以接受这样的行为,但是当文档的缩影已经存在的时候,该操作会将失败。 下面是一个op_type参数的例子



curl -XPUT 'http://192.168.8.98:9200/twitter/tweet/1?op_type=create' -d '{ 
 
 
 

     "user":"kimchy", 
 
 
 

     "post_date":"2014-12-05T14:12:12", 
 
 
 

     "message":"trying out Elastic Searche” 
 
 
 

   }’


另外的一种create方式:


curl -XPUT 'http://192.168.8.98:9200/twitter/wwn/1/_create' -d '{ 
 
 
 

     "user":"kimchy", 
 
 
 

     "post_date":"2009-11-11T14:12:12", 
 
 
 

     "message":"hello,world" 
 
 
 

   }' 
 
 

 
 
 
 

   curl -XPUT 'http://192.168.8.98:9200/twitter/wwn/1/_create' -d '{ 
 
 
 

     "user":"kimchy", 
 
 
 

     "post_date":"2009-11-11T14:12:12", 
 
 
 

     "message":"hello,world" 
 
 
 

   }’



没有就可以成功创建。



路由(Routing)。默认情况下,分片或路由是通过计算文档的hash值来控制的,为了更明确的控制值,送入路由器使用hash函数计算hash值的操作可以通过routing参数来控制。


curl -XPOST 'http://192.168.8.98:9200/twitter/tweet?routing=kimchy' -d '{ 
 
 
 

     "user":"wwn", 
 
 
 

     "post_date":"2014-12-12T12:12:12" 
 
 
 

   }'




标签:Index,12,http,9200,twitter,索引,API,ElasticSearch,curl
From: https://blog.51cto.com/u_16152230/6431755

相关文章

  • Vue3 之 响应式 API reactive、 effect源码,详细注释
    Vue3之响应式APIreactive、effect源码,详细注释目录一.实现响应式API:reactive、shallowReactive、readonly、shallowReadonly1.针对不同的API创建不同的响应式对象2.实现createReactiveObject3.实现不同的拦截函数baseHandlers.ts二.实现响应式effect1.创建响应式的......
  • 如何通过API接口获取淘宝的店铺所有商品详情
    在电子商务领域中,淘宝是亚洲最大的在线交易平台之一,拥有海量的商品资源和消费者。如果你是一名开发者,想要在自己的网站或者APP中嵌入淘宝商品资源,那么你就需要通过淘宝开放平台提供的API接口来获取这些资源。本篇文章将介绍如何通过API接口获取淘宝店铺的所有商品详情信息。第一......
  • vue3使用ElementPlus的消息el-message样式不生效或者被遮盖(z-index)
    一、el-message自定义样式不生效想改弹出框的位置时不生效,使用了el-message的自定义类的custom-class属性也不行。原因应该是加了scoped后使用到里面样式的dom会添加data-v-xxxx这种属性防止css污染,但是message生成的dom是没有添加data-v-xxx属性的,所以样式无效。解决方式:js动态设......
  • 如何从零开始构建 API ?
    假设你请承包商从零开始建造一座房子,你肯定期望他们交付最高质量的房子。他们必须通过检查、遵守安全规范并遵循项目中约定的要求。因为建房子可容不得走捷径。如果承包商经常走捷径,他们的声誉会受到影响,从而失去客户。其实,开发API就像建房子一样。构建API时,在将其推向市场之......
  • .net core WebAPI 初探及连接MySQL
    1.前言笔者最近跟着微软官方文档学习.netcoreWebAPI,但发现其对WebAPI连接数据库、读取数据库方面讲得不够细致明了。写此文的目的,即实现.netcoreWebAPI的GET、POST方法访问数据库,并输出结果。2.开发准备2.1操作系统Windows10/Windows72.2.netcoresdk.netcore......
  • ElasticSearch
    端口9300组件间通信,9200http界面端口,5601kibana界面基本操作es不支持修改索引信息###创建索引shopping,es中的索引类似于关系数据库中的库curl-XPUThttp://localhost:9200/shopping###查看索引curl-XGEThttp://localhost:9200/shopping###查看所有索引curl......
  • elasticsearch查询
    elasticsearch查询,elasticsearch常见查询,elasticsearch命令elasticsearch常用命令1、查询索引GET_cat/indices 2、查看es磁盘使用情况GET_cat/allocation?v&pretty 3、查看es分词情况GET_analyze{"text":"中国"}elasticsearch常用查询查询基本语法,所......
  • cookies Web Storage API
    https://developer.mozilla.org/zh-CN/docs/web/api/document/cookie从Firefox2起,有更好的客户端存储机制用以替代cookie- WHATWGDOMStorage (en-US).你可以通过更新一个cookie的过期时间为0来删除一个cookie。请注意,更多/更大的cookies意味着每个请求都要包......
  • Laravel Api接口数据进行加解密
    Laravel利用中间件处理API接口数据加解密;在某些时候,为了接口数据的安全和保密性,需要对来回的数据进行加密处理。如果是Laravel框架,中间件绝对是个好东西。Laravel中间件包含一个完整的工作流,即请求前中间件(request)和请求后中间件(response)。在我们这次的场景中,刚好很好的用到了......
  • uniapp使用uview组件的indexList写选择城市
    <template><viewclass=""><viewclass="top"><viewclass="search-boxmt10flexalcenter"><viewclass="search-input"><u-search:showAction=&q......