ElasticSearch 查询数据

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数据库多条件查询

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注