强大的分布式搜索和分析引擎
Elasticsearch是基于Lucene的分布式搜索和分析引擎,能够存储、搜索和分析大量数据,常用于全文搜索、日志分析、实时数据监控。
# Docker
docker pull elasticsearch:8.8.0
docker run -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
--name elasticsearch elasticsearch:8.8.0
# 验证
curl http://localhost:9200
# Kibana(可视化工具)
docker pull kibana:8.8.0
docker run -d -p 5601:5601 --link elasticsearch \
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
--name kibana kibana:8.8.0
# 创建索引
PUT /blogs
{
"mappings": {
"properties": {
"title": {"type": "text"},
"content": {"type": "text"},
"author": {"type": "keyword"},
"created_at": {"type": "date"}
}
}
}
# 插入文档
POST /blogs/_doc
{
"title": "Elasticsearch入门",
"content": "这是一个示例文档",
"author": "John",
"created_at": "2024-01-01"
}
# 搜索
GET /blogs/_search
{
"query": {
"match": {
"title": "入门"
}
}
}
# 聚合
GET /blogs/_search
{
"size": 0,
"aggs": {
"authors": {
"terms": {
"field": "author"
}
}
}
}
# Match查询
{
"query": {
"match": { "title": "search term" }
}
}
# Term查询
{
"query": {
"term": { "status": "published" }
}
}
# Range查询
{
"query": {
"range": {
"created_at": {
"gte": "2024-01-01",
"lte": "2024-12-31"
}
}
}
}
# Bool查询
{
"query": {
"bool": {
"must": [
{"match": {"title": "elasticsearch"}}
],
"filter": [
{"term": {"status": "published"}}
]
}
}
}