API Elasticsearch не передает набор данных Json в URL - PullRequest
0 голосов
/ 22 мая 2018

Я использую API упругого поиска для Python для запроса данных и построения графика в нашем собственном приложении.По какой-то причине данные Json (body / Param) не были опубликованы вместе с моим URL-адресом запроса.Я получаю пустой объект данных.Вот мой код и ответ.

#!/usr/bin/env python
import requests
from elasticsearch import Elasticsearch
import json

from ssl import create_default_context
cafile="my.perm.pac"

context = create_default_context()

url = "https://mydev-elk.dev1.com/elasticsearch/logstash-browse-access-logs-*/"

data=
{

"query": {
"bool": {
"must": [
{
"match_all": {}
},
{
"range": {
"log_timestamp": {
"gte": 1526916192084,
"lte": 1526917092084,
"format": "epoch_millis"
}
}
}
],
"must_not": []
}
},

"size": 0,
"_source": {
"excludes": []
},

"aggregations": {

"2": {
  "date_histogram": {
    "field": "log_timestamp",
    "interval": "5s",
    "time_zone": "America/Chicago",
    "min_doc_count": 1
  }
}
}

}

es = Elasticsearch(
[url],
http_auth=(user', 'pass'),
scheme="https",
port=443,
ssl_context=context,
)

res = es.search(index="/logstash-browse-access-logs-*", body=data)

print(res)

Когда я запускаю приведенный выше код, я получаю следующий ответ:

{'took': 507, 'timed_out': False, '_shards': {'total': 152, 'successful': 152, 'skipped': 0, 'failed': 0}, 'hits': {'total': 0, 'max_score': None, 'hits': []}}

Но когда я использую URL в браузере, я былв состоянии получить объекты Json.

https://mydev-elk.dev1.com/elasticsearch/logstash-browse-access-logs-*/_search?source={"query": {"bool": {"must": [{"match_all": {}},{"range": {"log_timestamp": {"gte": 1526916192084,"lte": 1526917092084,"format": "epoch_millis"}}}],"must_not": []}},"size": 0,"_source": {"excludes": []},"aggregations": {"2": {  "date_histogram": {    "field": "log_timestamp",    "interval": "5s",    "time_zone": "America/Chicago",   "min_doc_count": 1  }}}}

Может кто-нибудь, пожалуйста, помогите, что я делаю неправильно.

1 Ответ

0 голосов
/ 26 июля 2018

Я решил опубликовать ответ на свои вопросы, если кто-то еще ищет

from elasticsearch import Elasticsearch
import json
es = Elasticsearch([{'host': 'hostname or ip', 'port': 9200}], http_auth=('username', 'password'), maxsize=25)

data = es.search(request_timeout=30, index="your_index_name", body={"your Json query string as Json format"} )
print (data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...