Elasticsearch下载、配置与使用案例
Elasticsearch是一个开源的搜索和分析引擎,适用于各种数据类型,包括文本、数字、地理位置、结构化和非结构化数据。
1. 下载与安装
1.1 下载
从 Elasticsearch官方网站 下载最新版本的Elasticsearch。
1.2 安装
以Linux为例,解压下载的压缩包:
bash 复制代码tar -xzf elasticsearch-7.17.0-linux-x86_64.tar.gz
cd elasticsearch-7.17.0/
1.3 启动
在终端中运行以下命令以启动Elasticsearch:
bash
复制代码
./bin/elasticsearch
Elasticsearch默认在9200端口上运行,启动后可以在浏览器中访问 http://localhost:9200
进行验证。
2. 配置
Elasticsearch的配置文件位于 config/elasticsearch.yml
。一些常用配置项如下:
yaml 复制代码#
节点名称
node.name: node-1
#
集群名称
cluster.name: my-cluster
#
数据路径
path.data: /var/lib/elasticsearch
#
日志路径
path.logs: /var/log/elasticsearch
#
网络绑定地址
network.host: 0.0.0.0
# HTTP
端口
http.port: 9200
在修改配置文件后,需要重新启动Elasticsearch以使更改生效。
3. 使用案例
3.1 基本操作
Elasticsearch通过RESTful API进行操作,可以使用curl
命令或Postman等工具。
创建索引
bash
复制代码
curl -X PUT "localhost:9200/my_index"
添加文档
bash 复制代码curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
"name": "John Doe",
"age": 30,
"email": "john.doe@example.com"
}'
查询文档
bash
复制代码
curl -X GET "localhost:9200/my_index/_doc/1"
搜索文档
bash 复制代码curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"name": "John"
}
}
}'
3.2 使用Python进行操作
使用elasticsearch
Python库可以方便地与Elasticsearch进行交互。
安装库
bash
复制代码
pip install elasticsearch
Python示例代码
python 复制代码from elasticsearch import Elasticsearch
#
连接到
Elasticsearch
es = Elasticsearch(["http://localhost:9200"])
#
创建索引
es.indices.create(index='my_index', ignore=400)
#
添加文档
doc = {
"name": "Jane Doe",
"age": 25,
"email": "jane.doe@example.com"
}
es.index(index="my_index", id=1, document=doc)
#
查询文档
result = es.get(index="my_index", id=1)
print(result['_source'])
#
搜索文档
search_param = {
"query": {
"match": {
"name": "Jane"
}
}
}
search_result = es.search(index="my_index", body=search_param)
print(search_result['hits']['hits'])
项目示例:博客搜索引擎
目录结构
arduino 复制代码blog_search/
├──
app.py
├──
requirements.txt
└──
config/
└──
elasticsearch.yml
requirements.txt
txt 复制代码Flask
elasticsearch
config/elasticsearch.yml
yaml 复制代码cluster.name: blog-cluster
network.host: 0.0.0.0
http.port: 9200
app.py
python 复制代码from flask import Flask, request, jsonify
from elasticsearch import Elasticsearch
app = Flask(__name__)
es = Elasticsearch(["http://localhost:9200"])
@app.route('/create_index', methods=['POST'])
def create_index():
es.indices.create(index='blog', ignore=400)
return jsonify({"message": "Index created"}), 201
@app.route('/add_post', methods=['POST'])
def add_post():
post = request.json
es.index(index='blog', document=post)
return jsonify({"message": "Post added"}), 201
@app.route('/search', methods=['GET'])
def search():
query = request.args.get('q')
search_param = {
"query": {
"match": {
"content": query
}
}
}
search_result = es.search(index='blog', body=search_param)
return jsonify(search_result['hits']['hits']), 200
if __name__ == '__main__':
app.run(debug=True)
运行项目
-
启动Elasticsearch。
-
安装项目依赖:
bash
复制代码
pip install -r requirements.txt
-
启动Flask应用:
bash
复制代码
python app.py
使用项目
-
创建索引:
bash
复制代码
curl -X POST "http://localhost:5000/create_index"
-
添加博客文章:
bash 复制代码curl -X POST "http://localhost:5000/add_post" -H 'Content-Type: application/json' -d'
{
"title": "First Post",
"content": "This is the content of the first post."
}'
-
搜索博客文章:
bash
复制代码
curl -X GET "http://localhost:5000/search?q=content"
以上示例展示了如何使用Elasticsearch创建一个简单的博客搜索引擎,涵盖了索引创建、文档添加和搜索功能。这是一个入门级项目,可以帮助你理解Elasticsearch的基本使用和Flask的基本操作。你可以在此基础上扩展功能,例如添加用户认证、复杂查询和前端界面等。