Go에서 부분 레코드 업데이트를 위해 Olivere/elastic에서 업데이트 API 사용
Go에서 ElasticSearch의 레코드 업데이트는 다음을 사용하여 부분적으로 수행할 수 있습니다. 업데이트 API. ElasticSearch의 인기 있는 Go 클라이언트인 Olivere/elastic은 업데이트 수행 기능을 제공합니다. 다음은 oilvere/elastic에서 업데이트 API를 사용하는 방법에 대한 자세한 설명입니다.
부분 업데이트를 수행하려면 client.Update() 메서드를 사용하세요. 업데이트할 레코드의 인덱스, 유형, ID를 지정할 수 있습니다. Doc() 메소드를 사용하면 업데이트할 데이터를 제공할 수 있습니다.
<code class="go">import ( "context" "fmt" "github.com/olivere/elastic/v7" ) func main() { ctx := context.Background() // Connect to ElasticSearch client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200")) if err != nil { // Handle error } // Create example data _, err = client.Update().Index("test3").Type("user").Id("2").Doc(map[string]interface{}{"location": "new location"}).Do(ctx) if err != nil { // Handle error } fmt.Println("Record updated!") }</code>
위 코드에서는 업데이트할 필드를 키로, 새 값을 값으로 포함하는 맵을 제공합니다. 이 방법을 사용하면 레코드의 모든 필드를 업데이트할 수 있습니다.
대체 접근 방식(작동하지 않음)
위 접근 방식은 간단하고 효과적이지만 문제가 발생할 수 있습니다. Script 메서드를 사용하여 레코드를 업데이트할 때. 다음은 실패한 스크립트 기반 업데이트의 예입니다.
<code class="go">// Update record using script script := elastic.NewScript("ctx._source.location = loc").Params(map[string]interface{}{"loc": message}).Lang("groovy") _, err = client.Update().Index("test3").Type("user").Id("2").Script(script).Do(ctx)</code>
이 접근 방식은 Olivere/elastic 버전 7.8.0의 잠재적인 버그로 인해 작동하지 않을 수 있습니다. Olivere/elastic을 사용하여 ElasticSearch에서 안정적이고 일관된 부분 업데이트를 위해 첫 번째 접근 방식을 고수하는 것이 좋습니다.
위 내용은 Go에서 Olivere/elastic을 사용하여 ElasticSearch에서 부분 문서 업데이트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!