当前位置: 首页 >> ES >> ES安装与客户端

ES安装与客户端

2023-09-03 22:08:57 星期日  发表于北京  阅读:899


ES的安装非常简单,基本上下载解压启动就可以,可参照官网:https://www.elastic.co/guide/cn/elasticsearch/guide/current/running-elasticsearch.html
启动过程中如果报错,参照下一篇文章解决

ES与客户端交互

有两种交互方式:

1、各种语言的SDK(包括Python也有)
2、HTTP接口

下面用Python代码演示ES的连接、新建文档、更新文档、查询文档等操作

  1. import json
  2. import requests
  3. HOST = "172.16.91.3"
  4. PORT = 9200
  5. HEADERS = {"Content-Type": "application/json"}
  6. BASE_URL = f"http://{HOST}:{PORT}"
  7. # 获取所有文档数
  8. def docs_count():
  9. # ?pretty是为了让返回结果格式化显示,该参数可不加
  10. url = BASE_URL + "/_count?pretty"
  11. data = {"query": {"match_all": {}}}
  12. response = requests.get(url, headers=HEADERS,
  13. data=json.dumps(data, ensure_ascii=True))
  14. print(response.text)

输出结果

  1. {
  2. "count" : 3,
  3. "_shards" : {
  4. "total" : 1,
  5. "successful" : 1,
  6. "skipped" : 0,
  7. "failed" : 0
  8. }
  9. }

创建文档

  1. # 创建/创建文档
  2. def docs_put():
  3. # megacorp 是自定义的文档库(索引名称)
  4. # employee 是类型名称
  5. # 1 是文档ID(特定的雇员ID)
  6. url = BASE_URL + "/megacorp/employee/5" # 如果文档已经存在,则更新,否则是创建
  7. data = {
  8. "first_name": "John",
  9. "last_name": "Smith",
  10. "age": 25,
  11. "about": "I love to go rock climbing",
  12. "interests": ["sports", "music"]
  13. }
  14. response = requests.post(url, headers=HEADERS,
  15. data=json.dumps(data, ensure_ascii=True))
  16. print(response.text)

删除文档

  1. # 删除文档
  2. def docs_delete():
  3. url = BASE_URL + "/megacorp/employee/5"
  4. response = requests.delete(url, headers=HEADERS)
  5. print(response.text)

查询文档

  1. # 查询文档
  2. def docs_query():
  3. # ?pretty是为了让返回结果格式化显示,该参数可不加
  4. url = BASE_URL + "/megacorp/employee/1?pretty"
  5. response = requests.get(url, headers=HEADERS)
  6. print(response.text)

搜索所有文档

  1. # 搜索所有雇员(文档)
  2. def search_all():
  3. url = BASE_URL + "/megacorp/employee/_search?pretty"
  4. response = requests.get(url, headers=HEADERS)
  5. print(response.text)

全文搜索

  1. # 全文检索:搜索所有喜欢攀岩(rock climbing)的员工
  2. def search_full():
  3. url = BASE_URL + "/megacorp/employee/_search?pretty"
  4. data = {
  5. "query": {
  6. "match": {
  7. "about": "rock climbing"
  8. }
  9. }
  10. }
  11. response = requests.get(url, headers=HEADERS,
  12. data=json.dumps(data, ensure_ascii=True))
  13. print(response.text)