ElasticSearch学习(六)使用ElasticSearch API实现CRUD

目录

2.5、版本控制

2.6、实现映射mapping

2.7、基本查询(Query查询)

2.7.1、数据准备

2.7.2、term查询和terms查询

2.7.3、控制查询返回的数量

2.7.4、返回版本号

2.7.5、match查询(分词器)

2.7.6、控制加载的字段

2.7.7、排序

2.7.8、前缀匹配查询

2.7.9、范围查询

2.7.10、willdcard查询

2.7.11、fuzzy实现模糊查询

2.7.12、高亮搜索结果

2.8、中文的基本查询(Query查询)

2.8、Filter查询

2.8.1、简单的过滤查询

2.8.2、bool过滤查询

2.8.3、范围过滤查询

2.8.4、过滤非空

2.8.5、过滤器缓存

2.8.6、聚合查询

2.8.7、复合查询


添加索引:

PUT /lib/
{
"settings":{
    "index":{
        "number_of_shards": "5",
        "number_of_replicas": "1"
        }
    }
}

PUT lib

查看索引信息:

GET /lib/_settings

查看全部索引信息:

GET _all/_settings

添加文档:

PUT /lib/user/1

{"first_name":"Fir",

}

 

2.5、版本控制

ElasticSearch采用了乐观锁来保证数据的一致性,也就是说,当用户对document进行操作时,并不需要对该document作加锁和解锁的操作,只需要指定要操作的版本即可,当版本号一致时,ElasticSearch会允许该操作顺利执行,而当版本号存在冲突时,ElasticSearch会提示冲突并抛出异常(VersionConflictEngineException异常)。

ElasticSearch的版本号的取值范围为1到2^63 - 1。

内部版本控制:使用的是 _version

外部版本控制:ElasticSearch在处理外部版本号时会与内部版本号的处理有些不同。它不再是检查_version是否与请求中指定的数值相同,而检查当前的_version是否比指定的数值小,如果请求成功,那么外部的版本号就会被存储到文档中_versionz中。

为了保持_version与外部版本控制的数据一致,使用version_type = external。

2.6、实现映射mapping

创建索引的时候,可以预先定义字段的类型以及相关属性,这样就能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理字符串值等支持的数据类型:

(1)核心数据类型(Code datatypes)

字符型:string,string类型包括

text和keyword

text类型被用来索引长文本,在建立索引前会将这些文本进行分词,转化为词的组合,建立索引,允许es来检索这些词语。text类型不能用来排序和聚合。

keyword 类型不需要进行分词,可以被用来检索过滤、排序和聚合。keyword类型字段只能用本身来进行检索。

数字型:long,integer,short,byte,double,float

日期型:date

布尔型:boolean

二进制型:binary

(2)复杂数据类型(Complex dataypes)

数组类型(Array datatype);数组类型不需要专门制定数组元素的type,例如:

字符型数组:["one","two"]

整数数组:[1,2]

数组型整数:[1,[2,3]] 等价于 [1,2,3]

对象数组:[{"name": "Mary", "age":12},{"name" : "john" , "age" : 10}]

对象类型(Object datatype):_object_ 用于单个JSON对象;

嵌套类型(Nested datatype):_nested_用于JSON数组;

(3)地理位置类型(Geo datatypes)

地理坐标类型(Geo-point datatype):_geo_point_ 用于经纬度坐标;

地理形状类型(Geo-Shape datatype):_geo_shape_ 用于类似于多边形的复杂形状;

(4)特定类型(Specialised datatype)

IPv4类型(IPv4 datatype):_ip_ 用于IPv4地址;

Completion类型(Completion datatype):_ completion _ 提供自动补全建议;

Token count类型(Token count datatype):_ token _ count _ 用于统计做了标记的字段的index数目,该值会一直增加,不会因为过滤条件而减少。mapper-murmur3

类型:通过插件,可以通过 _ murmur3 _ 来计算index的hash值;

附加类型(Attachment datatype):采用mapper-attachments

插件,可支持 _ attachments _ 索引

支持的属性:

2.7、基本查询(Query查询)

2.7.1、数据准备

创建一个mapping:

PUT /lib3
{
  "settings": {
    "number_of_shards": 3
    , "number_of_replicas": 0
  },
  "mappings": {
    "user":{
      "properties": {
        "name":{"type": "text"},
        "address":{"type": "text"},
        "age":{"type": "integer"},
        "interests":{"type": "text"},
        "birthday":{"type": "date"}
      }
    }
  }
}

插入几条数据:

PUT /lib3/user/1
{
  "name" : "zhaoliu",
  "address" : "hei long jiang sheng tie ling shi",
  "age" : 50,
  "birthday" : "1970-12-12",
  "interests" : "xi huan hejiu,duanlian,lvyou"
}

PUT /lib3/user/2
{
  "name" : "zhaoming",
  "address" : "bei jing hai dian qu ",
  "age" : 20,
  "birthday" : "1998-10-12",
  "interests" : "xi huan hejiu,duanlian,lvyou"
}
PUT /lib3/user/3
{
  "name" : "lisi",
  "address" : "hei long jiang sheng tie ling shi",
  "age" : 23,
  "birthday" : "1970-12-12",
  "interests" : "xi huan hejiu,duanlian,lvyou"
}
PUT /lib3/user/4
{
  "name" : "wangwu",
  "address" : "bei jing hai dian qu",
  "age" : 26,
  "birthday" : "1995-12-12",
  "interests" : "xi huan hejiu,duanlian,lvyou"
}
PUT /lib3/user/5
{
  "name" : "zhangsan",
  "address" : "bei jing chao yang qu",
  "age" : 29,
  "birthday" : "1988-12-12",
  "inte
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值