ElasticSearch—curd操作

官网描述

  • 手动创建索引
curl -XPUT 'hdp01:9200/index_name'
  • 获取映射约束
curl 'hdp01:9200/index_name/_mapping/type_name?pretty'
  • 检索文档
curl 'hdp01:9200/index_name/_serach?q=hello&pretty'
curl 'hdp01:9200/index_name/_serach?q=name:tom&pretty'
  • 更新文档
curl -XPOST 'hdp01:9200/index_name/type_name/_id/_update' -H 'Content-Type:application/json' -d '{
    "doc": {
        "fieldName": "value"
    },
  # upsert:如果更新时发现文档不存在就insert
    "upsert": {
        "fieldName1": "value1",
        "fieldName2": "value2"
    }
}'
  • 批量导入
curl -XPOST 'hdp01:9200/index_name/type_name/_bulk?pretty' -H 'Content-Type:application/json' \
--data-binary "@path"
  • 删除文档
    ES在删除后仍然保留文档版本60s,这是为了避免并发时的更新操作因文档删除而重建文档的场景
#删除指定文档
curl -XDELETE 'hdp01:9200/index_name/type_name/_id'
#查询删除
curl -XDELETE 'hdp01:9200/index_name/_query?q=hello'
  • 删除索引
#删除索引效率是最高的,删除索引直接删除了索引分片相关的数据
curl -XDELETE 'hdp01:9200/index_name'
  • 关闭/打开索引
#关闭索引后ES内存中就只保留了其元数据,比如名字及分片位置
curl -XPOST 'hdp01:9200/index_name/_close'* 
curl -XPOST 'hdp01:9200/index_name/_open'

检索数据

  • 搜索请求基本模块
  • query: 使用查询DSL和过滤器DSL来配置,配置了基于评分返回的最佳文档
  • size: 限制返回文档数量
  • from: 和size一起使用来实现分页操作,结果的起始位置(从0开始)
  • _source: 指定返回的字段,默认返回完整的数据
  • sort: 默认的排序是基于文档的得分,可控制结果的排序规则
  • 基于url的搜索请求
#from和size使用,返回第2页的10项结果
curl 'hdp01:9200/index_name/_search?from=10&size=10'
#sort改变结果排序规则,按照日期升序排序
curl 'hdp01:9200/index_name/_search?sort=fieldName:asc'
#source指定返回字段
curl 'hdp01:9200/index_name/_search?_source=fieldName1,fieldName2'
#根据查询搜索
curl 'hdp01:9200/index_name/_search?q=fieldName:value'
  • 查询DSL
  • match_all查询(过滤器): 默认设置,全部返回,使用场景:
    • 返回全部的文档
    • 使用过滤器匹配时搭配过滤器使用
  • query_string 查询(过滤器): 指定默认字段,则根据字段匹配,否则全文匹配
  • match/multi_match 查询(过滤器): 分词后匹配,即模糊匹配
  • match_phrase: 短语匹配,锁定短语,只返回包含完整短语的文档,可使用slop设置词间的间隔
  • term/terms 查询(过滤器): 不分词匹配,即精准匹配
  • bool 查询(过滤器): 组合匹配,多个匹配条件,由3部分构成
    • must: 必须匹配
    • must_not: 不能匹配
    • should: 匹配数至少达到mininum_should_match参数值,不使用must默认1,使用了默认0
  • range 查询(过滤器): 范围匹配
  • prefix查询(过滤器): 前缀匹配
  • wildcard查询: 正则查询,前缀尽可能精准,通配符最后放
  • exists过滤器: 字段是否有值,即是否存在
  • missing过滤器: 过滤字段值缺失
    查询和的过滤器对比
  • 过滤器不计算相关性,只根据搜索条件过滤文档是否匹配,评分都为1,过滤器可以缓存,因此速度比查询快
  • 查询是先查询出符合索引条件的文档然后根据评分倒序排序

你可能感兴趣的:(搜索引擎)