Mit dem Aufkommen des Big-Data-Zeitalters sind die Speicherung und der Abruf von Daten zu einem wichtigen Thema geworden, mit dem wir konfrontiert sind. Elasticsearch ist eine verteilte Open-Source-Such- und Analyse-Engine, die durch schnelle Rückwärtsindizierung große Datenmengen durchsuchen kann und eine effiziente Volltextsuche, aggregierte Analyse, Echtzeitüberwachung, automatische Vervollständigung und Datenvisualisierung bietet Praxis, Es hat ein breites Anwendungsspektrum in Anwendungsszenarien. Gleichzeitig wird die Go-Sprache als schnelle, statisch typisierte Programmiersprache auch häufig in der Back-End-Dienstentwicklung verwendet. In diesem Artikel stellen wir vor, wie Sie Elasticsearch in der Go-Sprache verwenden, um effiziente Suchfunktionen zu implementieren.
1. Elasticsearch- und Go-Bibliotheken installieren
Zunächst müssen wir Elasticsearch und die entsprechenden Go-Bibliotheken installieren, um die Go-Unterstützung für den Elasticsearch-Client zu implementieren. Für die Installation von Elasticsearch können Sie auf der offiziellen Website von Elasticsearch (https://www.elastic.co/downloads/elasticsearch) die entsprechende Version des Installationspakets herunterladen und entsprechend dem Betriebssystem und der Installationsmethode installieren .
Als nächstes müssen wir die Elasticsearch-Clientbibliothek zur Go-Umgebung hinzufügen. In Go gibt es viele Bibliotheken von Drittanbietern, die unsere Programmierentwicklung mithilfe des Elasticsearch-Clients unterstützen. Unter ihnen sind die gängigsten Bibliotheken:
Hier wählen wir Elastic. In Go können Sie den folgenden Befehl verwenden, um die Elasticsearch-Clientbibliothek zu installieren:
go get -u gopkg.in/olivere/elastic.v5
2. Mit Elasticsearch verbinden
Um eine Verbindung mit Elasticsearch herzustellen, müssen Sie die IP angeben und Portnummer des Elasticsearch-Servers. Standardmäßig ist die Portnummer von Elasticsearch 9200. Sie können eine Verbindung über die folgenden Methoden herstellen:
client, err := elastic.NewClient(
elastic.SetURL("http://127.0.0.1:9200"), elastic.SetSniff(false),
)
if err != nil {
// do something...
}
Erstellen eines Elasticsearch-Clients Während des Terminals können Sie auch einige benutzerdefinierte Einstellungen vornehmen, wie zum Beispiel den folgenden Code:
client, err := elastic.NewClient(
elastic.SetURL("http://127.0.0.1:9200"), elastic.SetSniff(false), elastic.SetHealthcheck(true), elastic.SetGzip(true), elastic.SetErrorLog(log.New(os.Stderr, "ELASTIC ", log.LstdFlags)), elastic.SetInfoLog(log.New(os.Stdout, "", log.LstdFlags)), elastic.SetTraceLog(log.New(ioutil.Discard, "", 0)),
)
Unter anderem für die Einstellungen Um eine Verbindung zu Elasticsearch herzustellen, haben wir die folgenden Konfigurationen vorgenommen:
result, err := client.Search().
Index("users"). Query(query). Do(context.Background())
// do something...
", result.TookInMillis)
Unter anderem verwenden wir die NewMatcQuery()-Methode im elastischen Paket, um eine exakt passende Abfrage zu erstellen. Das Abfragefeld ist Name und die Abfragebedingung ist „John“. Beim Ausführen der Abfrage legen wir den Abfrageindex auf Benutzer fest und geben die Abfragemethode an. Hier verwenden wir client.Search(), um die Abfrageoperation auszuführen. Schließlich verwenden wir die Methode result.TookInMillis, um die von der Abfrage verbrauchte Zeit zu ermitteln.
4. Erweiterte Abfrage
Volltextabfrage
elastic.NewMatchQuery("content", "Elasticsearch"), elastic.NewRangeQuery("age").Gt("20"),
Fuzziness(2). PrefixLength(1)
Index("users"). Query(boolQuery). SortBy(sort). Do(context.Background())
5. Paging und Aggregation
Seitenabfrage
Index("users"). Query(boolQuery). From(0).Size(10). Do(context.Background())
ageAggs := elastic.NewTermsAggregation().Field("age")
searchResult, err := client.Search().
Index("users"). Query(boolQuery). Aggregation("age_group", ageAggs). Do(context.Background())
其中,我们使用了 Elastic 中的 NewTermsAggregation() 方法和 Aggregation() 方法来创建聚合查询。在这个示例中,我们以 "age" 字段作为聚合查询的依据。
六、总结
在本文中,我们介绍了如何在 Go 语言中使用 Elasticsearch 构建一个高效的搜索系统。从连接 Elasticsearch 开始,我们讲解了基础查询、进阶查询、分页和聚合查询等多种查询方式,以及如何使用 Elasticsearch 去提高我们的搜索效率,并给出了部分示例代码。通过阅读本文,您应该可以对 Go 和 Elasticsearch 之间的集成有一个更加深入的理解,应用于实际项目开发中去构建高效的搜索系统。
Das obige ist der detaillierte Inhalt vonVerwenden Sie Elasticsearch in der Go-Sprache, um eine effiziente Suche zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!