|
|
(4 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| = Middleware API for ElasticSearch =
| | This page was moved to [[Socorro/ElasticSearch_API]] |
| | |
| '''This is a draft''' of the new API for querying ElasticSearch through the middleware API of Socorro.
| |
| | |
| The Middleware API aims to separate the front-end from the back-end by providing an interface to access the data. By doing so, the front-end will not have to care about the storage system, and will retrieve data from Hbase, PostgreSQL or ElasticSearch in a consistent and simple way, through our REST API.
| |
| | |
| The API is separated in several categories / entry points:
| |
| * /query
| |
| * /search
| |
| * /report
| |
| * /crash
| |
| * /stats
| |
| | |
| This categories are explained below.
| |
| | |
| == Query ==
| |
| | |
| === Description ===
| |
| | |
| Low level query, just sends a JSON query to ES directly, and returns the result of this query.
| |
| | |
| === API Spec ===
| |
| | |
| HTTP request: '''POST'''<br>
| |
| Data: JSON query to send to ElasticSearch<br>
| |
| URI: '''/query/[(''types'')/]'''
| |
| | |
| * ''types'': Types of data we are looking into. If omitted, default value is _all. Several types can be specified, separated by a + symbol.
| |
| | |
| == Search ==
| |
| | |
| === Description ===
| |
| | |
| Searches for some terms in ES.
| |
| | |
| === API Spec ===
| |
| | |
| HTTP request: '''GET'''<br>
| |
| URI: '''/search/(''types'')/for/(''terms'')/in/(''fields'')/product/(''product'')/version/(''version'')/os/(''os_name'')/from/(''from_date'')/to/(''to_date'')/'''
| |
| | |
| * ''types'': Type of data we are looking into. Can be set to _all to search into all types. Several types can be specified, separated by a + symbol.
| |
| * ''terms'': Terms we are search for. Each term must be URL encoded. Several terms can be specified, separated by a + symbol.
| |
| * ''fields'': Fields we are searching in. Several fields can be specified, separated by a + symbol.
| |
| * ''product'': The product we are interested in. (e.g. Firefox, Fennec, Thunderbird... )
| |
| * ''version'': Version of the product. Can be set to _all to search into all versions.
| |
| * ''os_name'': Name of the Operating System. (e.g. Windows, Mac, Linux... )
| |
| * ''from_date'': Search for crashes that happened after this date.
| |
| * ''to_date'': Search for crashes that happened before this date.
| |
| | |
| | |
| == Report ==
| |
| | |
| === Description ===
| |
| | |
| Get a specific report.
| |
| | |
| === API Spec ===
| |
| | |
| HTTP request: '''GET'''<br>
| |
| URI: '''/report/...'''
| |
| | |
| | |
| == Crash ==
| |
| | |
| === Description ===
| |
| | |
| Searches a crash by it's OOID and returns it. This query is not supposed to use ES but HBase directly.
| |
| | |
| === API Spec ===
| |
| | |
| HTTP request: '''GET'''<br>
| |
| URI: '''/crash/(''crash_id'')'''
| |
| | |
| * ''crash_id'': Unique identifier of the crash to retrieve.
| |