一、Elasticsearch


一、Elasticsearch 简介

  • Elasticsearch 基于 Lucene
  1. 设计用途:用于分布式全文检索。
  2. 技术支持:通过 HTTP 使用 JSON 进行数据索引。

1. Elasticsearch 注解

  • Spring Data 通过注解来声明字段的映射属性。

  • @Document 注解:作用在类,标记实体类为文档对象。
  1. indexName:对应索引库名称。
  2. type:对应在索引库中的类型。
  3. useServerConfiguration:使用服务器配置,不会自动建索引库。
  4. shards:分片数量(默认 5)。
  5. replicas:副本数量(默认 1)。
  6. refreshInterval
  7. indexStoreType
  8. createIndex:是否自动创建索引库。

  • @Id 注解:作用在成员变量,标记一个字段作为 Id 主键。

  • @Field注解:作用在成员变量,标记为文档的字段,并指定字段映射属性。
  1. type:字段类型,是枚举 FieldType,可以是 text、long、short、date、integer、object 等。
  1. FieldType.Text:存储数据时候,会自动分词,并生成索引。
  2. FieldType.Keyword:存储数据时候,不会分词建立索引。
  • Numerical:数值类型,分两类。
  1. 基本数据类型:long、integer、short、byte、double、float、half_float
  2. 浮点数的高精度类型:scaled_float
    需要指定一个精度因子,比如 10100Elasticsearch 会把真实值乘以这个因子后存储,取出时再还原。
  • FieldType.Date:日期类型。
    Elasticsearch 可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为 long 节省空间。
  1. index:是否索引,布尔类型(默认:true)。
  2. format
  3. pattern
  4. store:是否存储,布尔类型(默认:false)。
  5. fielddata
  6. searchAnalyzer:分词搜索。
  7. analyzer:分词器名称(ik_max_word:即使用 ik 分词器)。
  8. ignoreFields
  9. includeInParent

2. Elasticsearch—API

比如:方法名 findByTitle,表示根据 title 查询,然后自动完成,无需写实现类。


KeywordSample
AndfindByNameAndPrice
OrfindByNameOrPrice
IsfindByName
NotfindByNameNot
BetweenfindByPriceBetween
LessThanEqualfindByPriceLessThan
GreaterThanEqualfindByPriceGreaterThan
BeforefindByPriceBefore
AfterfindByPriceAfter
LikefindByNameLike
StartingWithfindByNameStartingWith
EndingWithfindByNameEndingWith
Contains/ContainingfindByNameContaining
InfindByNameIn(Collectionnames)
NotInfindByNameNotIn(Collectionnames)
NearfindByStoreNear
TruefindByAvailableTrue
FalsefindByAvailableFalse
OrderByfindByAvailableTrueOrderByNameDesc

3. 支持 Lucene 的查询方法

// 布尔查询(可以用来组合多个查询条件)
// must 条件必须成立 and、
// must not 条件必须不成立 not、
// should 条件可以成立 or  
QueryBuilders.boolQuery();

// 相似度查询
QueryBuilders.fuzzyQuery();

// 查询所有数据
QueryBuilders.matchAllQuery();  

// 正则表达式查询
QueryBuilders.regexpQuery();

// 词条查询 
QueryBuilders.termQuery();  

// 模糊查询  
QueryBuilders.wildcardQuery();

4. Elasticsearch 的查询方法

// 对所有字段进行分词查询
QueryBuilders.queryStringQuery("全面"); 

// 只查询 content 里包含全文的内容(模糊查询:*任意字符串、?任意单个字符) 
QueryBuilders.wildcardQuery("content", "*全文*");

// 只查询 content 词条为 "搜索" 的内容
QueryBuilders.termQuery("content", "搜索"); 

二、Elasticsearch 命令


1. 查看索引大小

curl -X GET http://localhost:9200/_cat/indices?v
  • 索引名称,索引中文档总数, 索引占用磁盘空间大小,主分片占用磁盘空间大小。
    在这里插入图片描述

2. 删除单条数据

POST http://localhost:9200/{index_name}/_delete_by_query
# body
{
  "query":{
    "term":{
      "_id":4043
    }
  }
}

3. 清空索引数据

POST http://localhost:9200/{index_name}/_delete_by_query
# body
{
  "query": {
    "match_all": {}
  }
}
curl -XPOST -H "Content-Type: application/json" http://localhost:9200/log/_delete_by_query -d '{"query": {"match_all": {} }}'
curl -XPOST -H "Content-Type: application/json" http://localhost:9200/log/_delete_by_query?refresh&slices=10&scroll_size=10000" -d 
'{"query": {"bool": {"must": [
	{
		"range": {
			"'${daycolumn}'": { "lt": "'${savedayago}'"}
    	}
    }
]}}}'
curl -XDELETE http://localhost:9200/*-'2022.01.01'
curl -XDELETE http://localhost:9200/log-'2022.01.01'

4. 清空多个索引数据

POST http://localhost:9200/{index1_name},{index2_name}/_delete_by_query
# body
{
  "query": {
    "match_all": {}
  }
}

5. 设置非只读

curl -XPUT -H "Content-Type: application/json" http://localhost:9200/log/_settings -d '{"index.blocks.read_only_allow_delete": null}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑士梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值