ES的安装非常简单,基本上下载解压启动就可以,可参照官网:https://www.elastic.co/guide/cn/elasticsearch/guide/current/running-elasticsearch.html
启动过程中如果报错,参照下一篇文章解决
有两种交互方式:
1、各种语言的SDK(包括Python也有)
2、HTTP接口
下面用Python代码演示ES的连接、新建文档、更新文档、查询文档等操作
import json
import requests
HOST = "172.16.91.3"
PORT = 9200
HEADERS = {"Content-Type": "application/json"}
BASE_URL = f"http://{HOST}:{PORT}"
# 获取所有文档数
def docs_count():
# ?pretty是为了让返回结果格式化显示,该参数可不加
url = BASE_URL + "/_count?pretty"
data = {"query": {"match_all": {}}}
response = requests.get(url, headers=HEADERS,
data=json.dumps(data, ensure_ascii=True))
print(response.text)
输出结果
{
"count" : 3,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
}
}
# 创建/创建文档
def docs_put():
# megacorp 是自定义的文档库(索引名称)
# employee 是类型名称
# 1 是文档ID(特定的雇员ID)
url = BASE_URL + "/megacorp/employee/5" # 如果文档已经存在,则更新,否则是创建
data = {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": ["sports", "music"]
}
response = requests.post(url, headers=HEADERS,
data=json.dumps(data, ensure_ascii=True))
print(response.text)
# 删除文档
def docs_delete():
url = BASE_URL + "/megacorp/employee/5"
response = requests.delete(url, headers=HEADERS)
print(response.text)
# 查询文档
def docs_query():
# ?pretty是为了让返回结果格式化显示,该参数可不加
url = BASE_URL + "/megacorp/employee/1?pretty"
response = requests.get(url, headers=HEADERS)
print(response.text)
# 搜索所有雇员(文档)
def search_all():
url = BASE_URL + "/megacorp/employee/_search?pretty"
response = requests.get(url, headers=HEADERS)
print(response.text)
# 全文检索:搜索所有喜欢攀岩(rock climbing)的员工
def search_full():
url = BASE_URL + "/megacorp/employee/_search?pretty"
data = {
"query": {
"match": {
"about": "rock climbing"
}
}
}
response = requests.get(url, headers=HEADERS,
data=json.dumps(data, ensure_ascii=True))
print(response.text)