func NewDefaultClient() (*Client, error) {
	return NewClient(Config{})
}
NewDefaultClient creates a new client with default options.

It will use http://localhost:9200 as the default address.

It will use the OPENSEARCH_URL/ELASTICSEARCH_URL environment variable, if set,
to configure the addresses; use a comma to separate multiple URLs.

It's an error to set both OPENSEARCH_URL and ELASTICSEARCH_URL.
package opensearch
import (
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"net/url"
	"os"
	"regexp"
	"strconv"
	"strings"
	"sync"
	"time"
	"github.com/opensearch-project/opensearch-go/internal/version"
	"github.com/opensearch-project/opensearch-go/opensearchapi"
	"github.com/opensearch-project/opensearch-go/opensearchtransport"
)
var (
	reVersion *regexp.Regexp
)
func init() {
	versionPattern := `^([0-9]+)\.([0-9]+)\.([0-9]+)`
	reVersion = regexp.MustCompile(versionPattern)
}
const (
	defaultURL          = "http://localhost:9200"
	openSearch          = "opensearch"
	unsupportedProduct  = "the client noticed that the server is not a supported distribution"
	envOpenSearchURL    = "OPENSEARCH_URL"
	envElasticsearchURL = "ELASTICSEARCH_URL"
)
const Version = version.Client
type Config struct {
	Addresses []string  
	Username  string    
	Password  string    
	Header http.Header  
	CACert []byte
	RetryOnStatus        []int  
	DisableRetry         bool   
	EnableRetryOnTimeout bool   
	MaxRetries           int    
	CompressRequestBody bool  
	DiscoverNodesOnStart  bool           
	DiscoverNodesInterval time.Duration  
	EnableMetrics     bool  
	EnableDebugLogger bool  
	UseResponseCheckOnly bool
	RetryBackoff func(attempt int) time.Duration  
	Transport http.RoundTripper             
	Logger    opensearchtransport.Logger    
	Selector  opensearchtransport.Selector  
	ConnectionPoolFunc func([]*opensearchtransport.Connection, opensearchtransport.Selector) opensearchtransport.ConnectionPool
}
type Client struct {
	*opensearchapi.API       
	Transport            opensearchtransport.Interface
	useResponseCheckOnly bool
	productCheckMu      sync.RWMutex
	productCheckSuccess bool
}
type esVersion struct {
	Number      string `json:"number"`
	BuildFlavor string `json:"build_flavor"`
	Distribution string `json:"distribution"`
}
type info struct {
	Version esVersion `json:"version"`
	Tagline string    `json:"tagline"`
}