English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Web中的应用程序编程接口(API)是一组函数调用或其他编程指令,用于访问该特定Web应用程序中的软件组件。例如,Facebook API通过访问来自Facebook的数据或其他功能来帮助开发人员创建应用程序;它可以是出生日期或状态更新。
Elasticsearch提供了一个REST API,JSON可以通过HTTP访问该API。Elasticsearch使用一些约定,我们现在将对其进行讨论。
API中的大多数操作,主要是搜索和其他操作,都是针对一个或多个索引的。这有助于用户只需执行一次查询,就可以在多个位置或所有可用数据中进行搜索。许多不同的符号用于在多个索引中执行操作。我们将在本章中讨论其中的一些。
POST /index1,index2,index3/_search
{ "query":{ "query_string":{ "query":"any_string" } } }
来自index1, index2, index3的JSON对象中包含any_string。
POST /_all/_search
{ "query":{ "query_string":{ "query":"any_string" } } }
来自所有索引的JSON对象,其中包含any_string。
POST /school*/_search
{ "query":{ "query_string":{ "query":"CBSE" } } }
JSON-Objekte aus allen Indizes, die mit Schulen, die CBSE umfassen, beginnen.
另外,您也可以使用以下代码-
POST /school*,-schools_gov /_search
{ "query":{ "query_string":{ "query":"CBSE" } } }
JSON对象来自所有以“school”开头的索引,但不是来自school_gov并包含CBSE的索引。
还有一些URL查询字符串参数-
ignore_unavailable−Wenn ein oder mehrere index(es)URLs nicht existieren, wird kein Fehler aufgetreten oder wird jede Operation gestoppt. Zum Beispiel, der Index school existiert, aber book_shops nicht.
POST /school*,book_shops/_search
{ "query":{ "query_string":{ "query":"CBSE" } } }
{ "error":{ "root_cause":[{ "type":"index_not_found_exception", "resource.type":"index_or_alias", "index":"book_shops" }], "type":"index_not_found_exception", "resource.type":"index_or_alias", "index":"book_shops" },404 }
Beachten Sie das folgende Codebeispiel-
POST /school*,book_shops/_search?ignore_unavailable = true
{ "query":{ "query_string":{ "query":"CBSE" } } }
JSON-Objekte aus allen Indizes, die mit Schulen, die CBSE umfassen, beginnen.
trueWenn die URL mit Wildcard keine Indizes hat, verhindert dieser Parameter Fehler. Zum Beispiel, gibt es keine Indizes, die mit schools_pri beginnen-
POST /schools_pri*/_search?allow_no_indices = true
{ "query":{ "match_all":{} } }
{ "took":1,"timed_out": false, "_shards":{"total":0, "successful":0, "failed":0}, "hits":{"total":0, "max_score":0.0, "hits":[]} }
Dieser Parameter entscheidet darüber, ob Wildcards erweitert werden müssen, um offene oder geschlossene Indizes zu erzeugen oder beide gleichzeitig auszuführen. Der Wert dieses Parameters kann öffnen und schließen sein, oder auch leer.
Zum Beispiel, den Index Schule schließen-
POST /schools/_close
{"acknowledged":true}
Beachten Sie das folgende Codebeispiel-
POST /school*/_search?expand_wildcards = closed
{ "query":{ "match_all":{} } }
{ "error":{ "root_cause":[{ "type":"index_closed_exception", }], "type":"index_closed_exception", },403 }
Elasticsearch bietet die Funktion der Suche nach Indizes basierend auf Datum und Uhrzeit. Wir müssen das Datum und die Uhrzeit in einem bestimmten Format angeben. Zum Beispiel, accountdetail-2015.12.30, wird der Index gespeichert2015Jahr12Monat30 Tag, können mathematische Operationen durchgeführt werden, um Details für bestimmte Daten oder Datenzeitintervalle zu erhalten.
Format des Namens der Datenbankmathematischen Indizes-
<static_name{date_math_expr{date_format|time_zone}}> /<accountdetail-{now-2d{YYYY.MM.dd|utc}}>/_search
static_name ein Teil des Ausdrucks ist, bleibt es in jedem mathematischen Datumindex (wie Kunden明细) unverändert. date_math_expr enthält mathematische Ausdrücke, die wie now-2d dynamisch bestimmen. date_format enthält das Format, in dem das Datum in Indizes wie YYYY.MM.dd geschrieben wird. Wenn heute2015Jahr12Monat30 Tag, dann <accountdetail- {now-2d {YYYY.MM.dd}}>wird accountdetail-2015.12.28。
ausgedrückt | wird in |
---|---|
<accountdetail-{now-d}> | accountdetail-2015.12.29 |
<accountdetail-{now-M}> | accountdetail-2015.11.30 |
<accountdetail-{now{YYYY.MM}}> | accountdetail-2015.12 |
Nun werden wir einige der häufig verwendeten Optionen in Elasticsearch sehen, die zur Erstellung von spezifischen Formatantworten verwendet werden können.
Wir können durch Hinzufügen von URL-Abfrageparametern (d.h. pretty = true) eine gut formatierte JSON-Antwort erhalten.
POST /schools/_search?pretty = true
{ "query":{ "match_all":{} } }
…………………….. { "_index" : "schools", "_type" : "school", "_id" : "1", "_score" : 1.0, "_source":{ "name":"Central School", "description":"CBSE Affiliation", "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115", "location": [31.8955385, 76.8380405], "fees":2000, "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5" } } ………………….
Diese Option ermöglicht die Umwandlung der Statistik-Antwort in eine für Menschen lesbare Form (wenn human = true) oder in eine maschinenlesbare Form (wenn human = false). Zum Beispiel, wenn human = true, dann distance_kilometer = 20KM;如果human = false,则distance_meter =} 20000,此时需要其他计算机程序使用响应。
通过将它们添加到field_path参数中,我们可以过滤对较少字段的响应。例如,
POST /schools/_search?filter_path = hits.total
{ "query":{ "match_all":{} } }
{"hits":{"total":3}}