示例
编辑示例编辑
本节列举了一系列常见用例,可帮助您开始使用此新 API。
这部分内容仍在开发中,文档将在未来进行更新。
创建索引编辑
在本例中,我们将创建一个名为 test-index
的索引,并为 price
字段提供一个映射,该字段将是一个整数。请注意,使用 IntegerNumberProperty
的构建器将如何自动为 type
字段应用正确的值。
res, err := es.Indices.Create("test-index"). Request(&create.Request{ Mappings: &types.TypeMapping{ Properties: map[string]types.Property{ "price": types.NewIntegerNumberProperty(), }, }, }). Do(nil)
索引文档编辑
索引文档的标准方法是向 Request
方法提供一个 struct
,标准的 json/encoder
将在您的结构上运行,并将结果发送到 Elasticsearch。
document := struct { Id int `json:"id"` Name string `json:"name"` Price int `json:"price"` }{ Id: 1, Name: "Foo", Price: 10, } res, err := es.Index("index_name"). Request(document). Do(context.Background())
或者,您可以使用 Raw
方法并提供已序列化的 JSON
res, err := es.Index("index_name"). Raw([]byte(`{ "id": 1, "name": "Foo", "price": 10 }`)).Do(context.Background())
检索文档编辑
检索文档遵循 API 作为端点参数的一部分。按顺序提供 index
、id
,然后运行查询
res, err := es.Get("index_name", "doc_id").Do(context.Background())
检查文档是否存在编辑
如果您不想检索文档的内容,只想检查它是否存在于您的索引中,我们提供了 IsSuccess
快捷方式
if exists, err := es.Exists("index_name", "doc_id").IsSuccess(nil); exists { // The document exists ! } else if err != nil { // Handle error. }
如果一切顺利,结果为 true
,如果文档不存在,则为 false
。如果在请求期间发生错误,您将获得 false
和相关错误。
搜索编辑
可以使用结构体或构建器构建搜索查询。例如,让我们在名为 index_name
的索引中搜索 name
字段值为 Foo
的文档。
使用结构体请求
res, err := es.Search(). Index("index_name"). Request(&search.Request{ Query: &types.Query{ Match: map[string]types.MatchQuery{ "name": {Query: "Foo"}, }, }, }).Do(context.Background())
它生成以下 JSON
{ "query": { "match": { "name": { "query": "Foo" } } } }
聚合编辑
给定具有 price
字段的文档,我们对 index_name
运行求和聚合