首页 > 编程语言 > 详细

elasticSearch 原生python请求

时间:2020-06-10 19:32:45      阅读:46      评论:0      收藏:0      [点我收藏+]

安装 

url: https://www.elastic.co/cn/downloads/

下载解压, 开箱及用

import requests
import json

base_url = "http://127.0.0.1:9200"

session = requests.session()
session.headers.update({
"Content-Type": "application/json"
})

def format_json(data: dict):
print(json.dumps(data, indent=2))


def elastic_search_req(url, data, method: str):
res = session.request(method.upper(), url, json=data)
format_json(res.json())


# ****** ik分词器 ********

ik_url = F"{base_url}/_analyze" # noqa
ik_smart = {
"analyzer": "ik_smart", # 分词选择器
"text": "伟大的中国" # 要分的类容
}
# elastic_search_req(ik_url, ik_smart, ‘get‘)

ik_max_word = {
"analyzer": "ik_max_word", # 分词选择器 最细粒度化分
"text": "上海自来水来自海上" # 要分的类容
}
# elastic_search_req(ik_url, ik_max_word, ‘get‘)


# ***** put *****
# 创建文档 base_url /索引名/~类型名~/文档id 类型名 未来没有
put_body = {
"name": "yuhaipeng",
"age": 18
}
put_body2 = {
"name": "yuhaipeng2",
"age": 20
}
elastic_search_req(f"{base_url}/user/doc/1", put_body, ‘put‘)
elastic_search_req(f"{base_url}/user/doc/2", put_body2, ‘put‘)

# 创建规则 相当于创建一个表

rule_body = {
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday": {
"type": "date"
}
}
}
}
elastic_search_req(f"{base_url}/user2", rule_body, ‘put‘)

# 查看规则信息
elastic_search_req(f"{base_url}/user2", {}, ‘get‘)

# 给 user2 加数据
elastic_search_req(f"{base_url}/user2/_doc/7", {
"name": "14数据1abc",
"age": ‘8‘,
"birthday": "2019-01-01"
}, ‘put‘)


# ***** post *****
# 更新
# base_url /索引名/类型名称 / _update

post_body = {
"doc": {
"name": "yu"
}
}

elastic_search_req(f"{base_url}/user2/_doc/1/_update", post_body, ‘post‘)


# ***** 删除 ****
# delete 删除 delete test 删除test库 delete user/doc/1 删除id为1 的文档


elastic_search_req(f"{base_url}/user/doc/1", {}, ‘delete‘)


# *************** 查询 ***************
# 简单的搜索
elastic_search_req(f"{base_url}/user/doc/2", {}, ‘get‘)


get /base_url/user/_search?q=name:yu

elastic_search_req(f"{base_url}/user2/_search?q=name:yu", {}, ‘get‘)

# 复杂搜索************************************** match 匹配 bool
query = {
"query": {
"match": {
"name": "数据"
}
}
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

# 对数据进行过虑 取想要的字段
query = {
"query": {
"match": {
"name": "数据"
}
},
"_source": ["age", "name"] # 对数据进行过虑 取想要的字段
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

# 排序
query = {
"query": {
"match": {
"name": "数据"
}
},
"sort": {
"age": {
"order": "desc"
},

} # 排序
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

# 分页
query = {
"query": {
"match": {
"name": "数据"
}
},
"sort": {
"age": {
"order": "desc"
},

},
"from": 0, # 相当于数据库的limit offset 从0开始 查1条数据
"size": 8
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

query = {
"query": {
"bool": {
"must": [ # 里面的条件都要符合
{
"match": {
"name": "数"
}
},
{
"match": {
"age": 18
}
}
]
}
},
"sort": {
"age": {
"order": "desc"
},

},
"from": 0, # 相当于数据库的limit offset 从0开始 查1条数据
"size": 8
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

query = {
"query": {
"bool": {
"should": [ # 里面的条件只要一个符合就行
{
"match": {
"name": "数"
}
},
{
"match": {
"age": 18
}
}
]
}
},
"sort": {
"age": {
"order": "desc"
},

},
"from": 0, # 相当于数据库的limit offset 从0开始 查1条数据
"size": 8
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

query = {
"query": {
"bool": {
"must_not": [ # 查询里面不是这个的
{
"match": {
"name": "数"
}
},

]
}
},
"from": 0, # 相当于数据库的limit offset 从0开始 查1条数据
"size": 8
}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)

query = {
"query": {
"bool": {
"must": [ # 查询里面不是这个的
{
"match": {
"name": "数"
}
},

],

"filter": {
"range": {
"age": {
"gte": 1,
"lte": 20

}
}
}
},
}

}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)



query = {
"query": {
"match": {
"name": "yuha 数据" # 查询多个可以空格隔开
}
}

}

elastic_search_req(f"{base_url}/user2/_search", query, ‘get‘)


# 查询中的 term 精确查询

term_body = {
"query": {
"term": {
"name": "数"
}
}
}
elastic_search_req(f"{base_url}/user2/_search", term_body, ‘get‘)

term_body = {
"query": {
"bool": {
"should": [{
"term": {
"name": ‘数‘
}
},
{"term": {
"age": 18
}}]
}
}
}
elastic_search_req(f"{base_url}/user2/_search", term_body, ‘get‘)

# 高亮查询

highlight = {
"query": {
"match": {
"name": "数"
},

},
"highlight": {
"fields": {
"name": {}
}
}
}
elastic_search_req(f"{base_url}/user2/_search", highlight, ‘get‘)



highlight = {
"query": {
"match": {
"name": "数据"
},

},
"highlight": {
"pre_tags": "<p class=‘key‘ style=‘color:red‘>", # 自定义高这查询
"post_tags": "</p>",
"fields": {
"name": {}
}
}
}
elastic_search_req(f"{base_url}/user2/_search", highlight, ‘get‘)



elasticSearch 原生python请求

原文:https://www.cnblogs.com/yuhaipeng/p/13086883.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!