Kibana 图形化查询
GET index_tmp/_search?
{
"size": 3,
"query": {
"bool": {
"filter": [
{
"range": {
"create_time": {
"gte": 1715011200,
"lte": 1724083200
}
}
},
{
"term":{
"status_val" : 7
}
},
{
"terms":{
"download_type" : [2,4,5]
}
},
{
"term":{
"is_show" : 2
}
}
]
}
}
}
其中:
"size": 3 代表只查3条数据
"query": {} 代表查询内容
"bool": {}代表布尔查询
"filter": [] 过滤查询标识
filter是用于过滤查询的关键字,在filter里面可以使用多种查询条件,例如:range、term、terms、exists、ids几种常见的查询
"range": {}代表范围查询的标识
range范围关键字:
gt:大于。
lt:小于。
gte:大于等于。
lte:小于等于。
eq:等于。
ne:不等于。
"create_time": {}代表范围查询的字段
"gte": 1715011200 代表范围值大于等于1715011200
"lte": 1724083200 代表范围值小于等于1724083200
"term":{}代表单值的筛选
"terms":{}代表多值的筛选
Python连接查询
host = "127.0.0.1" #Host
port = 9200 #端口
user = "******" #用户
password = "*******" #密码
class ConnES:
def __init__(self, host, port, user=None, password=None):
if user and password:
# 创建一个Elasticsearch客户端实例
self.es = Elasticsearch(
[{"host": host, "port": port}], http_auth=(user, password)
)
else:
self.es = Elasticsearch(
[{"host": host, "port": port}],
)
self.connstatus = self.es.ping()
def search(self, index, body):
res = self.es.search(index=index, body=body)
return res
body = {
"from":0,
"size":100000,
"query": {
"bool": {
"filter": [
{
"range": {
"create_time": {
"gte": 1715011200,
"lte": 1724169600
}
}
},
{
"term": {
"status_val": 7
}
},
{
"terms":{
"download_type":[2, 4, 5]
}
},
{
"term": {
"is_show": 2
}
}
]
}
}
}
q = conn.search("index_tmp", body)
print(q)
参考文档:
es多条件查询语句 es数据库多条件查询