Elasticsearch: возвращает определенные поля из json в формате .csv / table - PullRequest
0 голосов
/ 02 июня 2019

Я новый пользователь Elasticsearch, но я изо всех сил пытаюсь сделать что-то, что было легко для меня в Splunk.Есть несколько конкретных полей, которые я хочу получить от каждого события в моем поиске, но результаты поиска "попадания" всегда возвращаются в большой структуре json, которая на 95% бесполезна для меня.Я выполняю поиск с помощью модуля запросов python, поэтому я могу анализировать нужные результаты в python, когда они возвращаются, но мне нужно получить доступ к миллионам событий, и производительность важна, поэтому я надеюсь, что есть более быстрый способ.

Вот пример одного отдельного события, возвращенного поиском Elasticsearch:

<Response [200]>                                                                             
{                                                                                            
    "hits": {                                                                                
        "hits": [                                                                            
            {                                                                                
                "sort": [
                    1559438581000
                ],      
                "_type": "_doc", 
                "_source": {                                                                 
                    "datapoint": {                                                           
                        "updated_at": "2019-06-02T00:01:02Z",                                
                        "value": 102
                    },  
                    "metadata": {                                                            
                        "id": "AB33",                                            
                        "property_name": "some_property",              
                        "oem_model": "some_model"                                       
                    }
                },  
                "_score": null, 
                "_index": "datapoint-2019.06",                                               
                "_id": "datapoint+4+314372003"                                               
            }, 

Я бы предпочел, чтобы мой поиск возвращал только результаты в формате таблицы / .csv / dataframe для updated_at,значения, id, имя_свойства, значения oem_model, такие как:

2019-06-02T00:01:02Z,102,AB33,some_property,some_model
..... and similar for other events ...

Кто-нибудь знает, возможно ли это сделать с Elasticsearch или с библиотекой запросов без анализа json после возврата результатов поиска?Большое спасибо за любую помощь.

1 Ответ

0 голосов
/ 02 июня 2019

Да, конечно с фильтрацией источника . Док здесь Вы фильтруете поле, которое будет возвращено из вашего запроса, таким образом, вы выбираете только полезные поля, и тогда вы не должны анализировать json. Посмотрите здесь:

from elasticsearch import Elasticsearch

es = Elasticsearch()

query = {
    "_source": [ "obj1.*", "obj2.*" ], #this is the list of the fields that you would return as a doc
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
res = es.search(index="your_index_name", body=query)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...