【Elasticsearch】3. 基本操作

2020-12-15 15:32:46 浏览数 (1)

文档的CURD

  • index
    • PUT my_index/_doc/1 {"user":"xxx", ....} -- 如果id不存在,会创建新的文档,否则会删除现有文档,再创建新的文档,版本会增加
  • create
    • PUT my_index/_create/1 {"user":"xxx", ....} -- 如果id已经存在,会失败
    • POST my_index/_doc {"user":"xxx", ....} -- 不指定id,自动生成
  • read
    • GET my_index/_doc/1
  • update
    • POST my_index/update/1 {"doc":{"user": "xxx", ...}} -- 文档必须已经存在,更新只会对相应字段做增量修改
  • delete
    • DELETE my_index/_doc/1

Create 一个文档

POST {index}/_doc PUT {index}/_create/{id}

  • 支持自动生成文档ID和指定文档id
  • 通过调用POST my_index/_doc
    • 系统会自动生成id
  • 通过调用PUT my_index/_create/1
    • URI中显示指定_create,如果id重复则操作失败

Get 一个文档

GET {index}/{index_id}

  • 找到文档,返回http 200
    • 文档元信息
      • _index / _type /
      • 版本信息,同一个id的文档,即使被删除Version也会增加
      • _source 中默认包含了文档的所有原始信息
  • 找不到文档,返回http 404

Index 文档

PUT {index}/_doc/{id}

  • index和create不一样的地方,如果文档不存在就索引新的文档,否则现有的文档就会被删除,新的文档被索引,版本信息 1

Update 文档

  • Updata 方法不会删除原来的文档,而是实现真正的数据更新
  • Post 方法 /Payload 需要包含在"doc"中

Bulk API

  • 支持在一次API调用中,对不同的索引进行操作
  • 支持4种类型操作
    • index
    • create
    • update
    • delete
  • 可以再URI中指定index,也可以在请求的pylload中进行
  • 操作中单条操作失败,并不会影响其他操作
  • 返回结果包括了每一条操作执行的结果

mget 批量读取

  • 批量操作,可以减少网络连接产生的开销,提高性能

msearch 批量读取

常见错误返回

  • 无法连接 :网络故障,或者集群挂了
  • 连接无法关闭: 网络故障或节点出错
  • 429:集群过于繁忙
  • 4xx:请求体格式错误
  • 500:集群内部错误

Analysis分词器

  • analysis - 文本分析是把文本转换一系列单词的过程,也叫分词
  • analysis 是通过 analyzer实现的
  • 除了在数据写入时转换词条,匹配query预计的时候也需要用相同的分词器对查询语句进行分词
  • anlyzer的组成
    • character filters:针对原始文本处理,例如去除html
    • tokenizer:按照规则切分单词
    • token filters:将切分的单词进行加工,小写,删除stopwords 增加同义词
  • 使用_analyzer api
    • 直接指定anlyer进行测试
    • 指定索引的字段进行测试
    • 自定义分词器进行测试

0 人点赞