typedapi/types/textproperty.go (973 lines of code) (raw):

// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you under // the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // Code generated from the elasticsearch-specification DO NOT EDIT. // https://github.com/elastic/elasticsearch-specification/tree/cbfcc73d01310bed2a480ec35aaef98138b598e5 package types import ( "bytes" "encoding/json" "errors" "fmt" "io" "strconv" "github.com/elastic/go-elasticsearch/v9/typedapi/types/enums/dynamicmapping" "github.com/elastic/go-elasticsearch/v9/typedapi/types/enums/indexoptions" "github.com/elastic/go-elasticsearch/v9/typedapi/types/enums/syntheticsourcekeepenum" "github.com/elastic/go-elasticsearch/v9/typedapi/types/enums/termvectoroption" ) // TextProperty type. // // https://github.com/elastic/elasticsearch-specification/blob/cbfcc73d01310bed2a480ec35aaef98138b598e5/specification/_types/mapping/core.ts#L303-L320 type TextProperty struct { Analyzer *string `json:"analyzer,omitempty"` Boost *Float64 `json:"boost,omitempty"` CopyTo []string `json:"copy_to,omitempty"` Dynamic *dynamicmapping.DynamicMapping `json:"dynamic,omitempty"` EagerGlobalOrdinals *bool `json:"eager_global_ordinals,omitempty"` Fielddata *bool `json:"fielddata,omitempty"` FielddataFrequencyFilter *FielddataFrequencyFilter `json:"fielddata_frequency_filter,omitempty"` Fields map[string]Property `json:"fields,omitempty"` IgnoreAbove *int `json:"ignore_above,omitempty"` Index *bool `json:"index,omitempty"` IndexOptions *indexoptions.IndexOptions `json:"index_options,omitempty"` IndexPhrases *bool `json:"index_phrases,omitempty"` IndexPrefixes *TextIndexPrefixes `json:"index_prefixes,omitempty"` // Meta Metadata about the field. Meta map[string]string `json:"meta,omitempty"` Norms *bool `json:"norms,omitempty"` PositionIncrementGap *int `json:"position_increment_gap,omitempty"` Properties map[string]Property `json:"properties,omitempty"` SearchAnalyzer *string `json:"search_analyzer,omitempty"` SearchQuoteAnalyzer *string `json:"search_quote_analyzer,omitempty"` Similarity *string `json:"similarity,omitempty"` Store *bool `json:"store,omitempty"` SyntheticSourceKeep *syntheticsourcekeepenum.SyntheticSourceKeepEnum `json:"synthetic_source_keep,omitempty"` TermVector *termvectoroption.TermVectorOption `json:"term_vector,omitempty"` Type string `json:"type,omitempty"` } func (s *TextProperty) UnmarshalJSON(data []byte) error { dec := json.NewDecoder(bytes.NewReader(data)) for { t, err := dec.Token() if err != nil { if errors.Is(err, io.EOF) { break } return err } switch t { case "analyzer": var tmp json.RawMessage if err := dec.Decode(&tmp); err != nil { return fmt.Errorf("%s | %w", "Analyzer", err) } o := string(tmp[:]) o, err = strconv.Unquote(o) if err != nil { o = string(tmp[:]) } s.Analyzer = &o case "boost": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseFloat(v, 64) if err != nil { return fmt.Errorf("%s | %w", "Boost", err) } f := Float64(value) s.Boost = &f case float64: f := Float64(v) s.Boost = &f } case "copy_to": rawMsg := json.RawMessage{} dec.Decode(&rawMsg) if !bytes.HasPrefix(rawMsg, []byte("[")) { o := new(string) if err := json.NewDecoder(bytes.NewReader(rawMsg)).Decode(&o); err != nil { return fmt.Errorf("%s | %w", "CopyTo", err) } s.CopyTo = append(s.CopyTo, *o) } else { if err := json.NewDecoder(bytes.NewReader(rawMsg)).Decode(&s.CopyTo); err != nil { return fmt.Errorf("%s | %w", "CopyTo", err) } } case "dynamic": if err := dec.Decode(&s.Dynamic); err != nil { return fmt.Errorf("%s | %w", "Dynamic", err) } case "eager_global_ordinals": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseBool(v) if err != nil { return fmt.Errorf("%s | %w", "EagerGlobalOrdinals", err) } s.EagerGlobalOrdinals = &value case bool: s.EagerGlobalOrdinals = &v } case "fielddata": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseBool(v) if err != nil { return fmt.Errorf("%s | %w", "Fielddata", err) } s.Fielddata = &value case bool: s.Fielddata = &v } case "fielddata_frequency_filter": if err := dec.Decode(&s.FielddataFrequencyFilter); err != nil { return fmt.Errorf("%s | %w", "FielddataFrequencyFilter", err) } case "fields": if s.Fields == nil { s.Fields = make(map[string]Property, 0) } refs := make(map[string]json.RawMessage, 0) dec.Decode(&refs) for key, message := range refs { kind := make(map[string]any) buf := bytes.NewReader(message) localDec := json.NewDecoder(buf) localDec.Decode(&kind) buf.Seek(0, io.SeekStart) if _, ok := kind["type"]; !ok { kind["type"] = "object" } switch kind["type"] { case "binary": oo := NewBinaryProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "boolean": oo := NewBooleanProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "{dynamic_type}": oo := NewDynamicProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "join": oo := NewJoinProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "keyword": oo := NewKeywordProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "match_only_text": oo := NewMatchOnlyTextProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "percolator": oo := NewPercolatorProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "rank_feature": oo := NewRankFeatureProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "rank_features": oo := NewRankFeaturesProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "search_as_you_type": oo := NewSearchAsYouTypeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "text": oo := NewTextProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "version": oo := NewVersionProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "wildcard": oo := NewWildcardProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "date_nanos": oo := NewDateNanosProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "date": oo := NewDateProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "aggregate_metric_double": oo := NewAggregateMetricDoubleProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "dense_vector": oo := NewDenseVectorProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "flattened": oo := NewFlattenedProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "nested": oo := NewNestedProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "object": oo := NewObjectProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "passthrough": oo := NewPassthroughObjectProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "semantic_text": oo := NewSemanticTextProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "sparse_vector": oo := NewSparseVectorProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "completion": oo := NewCompletionProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "constant_keyword": oo := NewConstantKeywordProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "counted_keyword": oo := NewCountedKeywordProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "alias": oo := NewFieldAliasProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "histogram": oo := NewHistogramProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "ip": oo := NewIpProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "murmur3": oo := NewMurmur3HashProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "token_count": oo := NewTokenCountProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "geo_point": oo := NewGeoPointProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "geo_shape": oo := NewGeoShapeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "point": oo := NewPointProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "shape": oo := NewShapeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "byte": oo := NewByteNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "double": oo := NewDoubleNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "float": oo := NewFloatNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "half_float": oo := NewHalfFloatNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "integer": oo := NewIntegerNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "long": oo := NewLongNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "scaled_float": oo := NewScaledFloatNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "short": oo := NewShortNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "unsigned_long": oo := NewUnsignedLongNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "date_range": oo := NewDateRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "double_range": oo := NewDoubleRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "float_range": oo := NewFloatRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "integer_range": oo := NewIntegerRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "ip_range": oo := NewIpRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "long_range": oo := NewLongRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo case "icu_collation_keyword": oo := NewIcuCollationProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Fields | %w", err) } s.Fields[key] = oo default: oo := new(Property) if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("new(Property) | %w", err) } s.Fields[key] = oo } } case "ignore_above": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.Atoi(v) if err != nil { return fmt.Errorf("%s | %w", "IgnoreAbove", err) } s.IgnoreAbove = &value case float64: f := int(v) s.IgnoreAbove = &f } case "index": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseBool(v) if err != nil { return fmt.Errorf("%s | %w", "Index", err) } s.Index = &value case bool: s.Index = &v } case "index_options": if err := dec.Decode(&s.IndexOptions); err != nil { return fmt.Errorf("%s | %w", "IndexOptions", err) } case "index_phrases": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseBool(v) if err != nil { return fmt.Errorf("%s | %w", "IndexPhrases", err) } s.IndexPhrases = &value case bool: s.IndexPhrases = &v } case "index_prefixes": if err := dec.Decode(&s.IndexPrefixes); err != nil { return fmt.Errorf("%s | %w", "IndexPrefixes", err) } case "meta": if s.Meta == nil { s.Meta = make(map[string]string, 0) } if err := dec.Decode(&s.Meta); err != nil { return fmt.Errorf("%s | %w", "Meta", err) } case "norms": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseBool(v) if err != nil { return fmt.Errorf("%s | %w", "Norms", err) } s.Norms = &value case bool: s.Norms = &v } case "position_increment_gap": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.Atoi(v) if err != nil { return fmt.Errorf("%s | %w", "PositionIncrementGap", err) } s.PositionIncrementGap = &value case float64: f := int(v) s.PositionIncrementGap = &f } case "properties": if s.Properties == nil { s.Properties = make(map[string]Property, 0) } refs := make(map[string]json.RawMessage, 0) dec.Decode(&refs) for key, message := range refs { kind := make(map[string]any) buf := bytes.NewReader(message) localDec := json.NewDecoder(buf) localDec.Decode(&kind) buf.Seek(0, io.SeekStart) if _, ok := kind["type"]; !ok { kind["type"] = "object" } switch kind["type"] { case "binary": oo := NewBinaryProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "boolean": oo := NewBooleanProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "{dynamic_type}": oo := NewDynamicProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "join": oo := NewJoinProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "keyword": oo := NewKeywordProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "match_only_text": oo := NewMatchOnlyTextProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "percolator": oo := NewPercolatorProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "rank_feature": oo := NewRankFeatureProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "rank_features": oo := NewRankFeaturesProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "search_as_you_type": oo := NewSearchAsYouTypeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "text": oo := NewTextProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "version": oo := NewVersionProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "wildcard": oo := NewWildcardProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "date_nanos": oo := NewDateNanosProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "date": oo := NewDateProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "aggregate_metric_double": oo := NewAggregateMetricDoubleProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "dense_vector": oo := NewDenseVectorProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "flattened": oo := NewFlattenedProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "nested": oo := NewNestedProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "object": oo := NewObjectProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "passthrough": oo := NewPassthroughObjectProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "semantic_text": oo := NewSemanticTextProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "sparse_vector": oo := NewSparseVectorProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "completion": oo := NewCompletionProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "constant_keyword": oo := NewConstantKeywordProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "counted_keyword": oo := NewCountedKeywordProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "alias": oo := NewFieldAliasProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "histogram": oo := NewHistogramProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "ip": oo := NewIpProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "murmur3": oo := NewMurmur3HashProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "token_count": oo := NewTokenCountProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "geo_point": oo := NewGeoPointProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "geo_shape": oo := NewGeoShapeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "point": oo := NewPointProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "shape": oo := NewShapeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "byte": oo := NewByteNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "double": oo := NewDoubleNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "float": oo := NewFloatNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "half_float": oo := NewHalfFloatNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "integer": oo := NewIntegerNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "long": oo := NewLongNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "scaled_float": oo := NewScaledFloatNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "short": oo := NewShortNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "unsigned_long": oo := NewUnsignedLongNumberProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "date_range": oo := NewDateRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "double_range": oo := NewDoubleRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "float_range": oo := NewFloatRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "integer_range": oo := NewIntegerRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "ip_range": oo := NewIpRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "long_range": oo := NewLongRangeProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo case "icu_collation_keyword": oo := NewIcuCollationProperty() if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("Properties | %w", err) } s.Properties[key] = oo default: oo := new(Property) if err := localDec.Decode(&oo); err != nil { return fmt.Errorf("new(Property) | %w", err) } s.Properties[key] = oo } } case "search_analyzer": var tmp json.RawMessage if err := dec.Decode(&tmp); err != nil { return fmt.Errorf("%s | %w", "SearchAnalyzer", err) } o := string(tmp[:]) o, err = strconv.Unquote(o) if err != nil { o = string(tmp[:]) } s.SearchAnalyzer = &o case "search_quote_analyzer": var tmp json.RawMessage if err := dec.Decode(&tmp); err != nil { return fmt.Errorf("%s | %w", "SearchQuoteAnalyzer", err) } o := string(tmp[:]) o, err = strconv.Unquote(o) if err != nil { o = string(tmp[:]) } s.SearchQuoteAnalyzer = &o case "similarity": var tmp json.RawMessage if err := dec.Decode(&tmp); err != nil { return fmt.Errorf("%s | %w", "Similarity", err) } o := string(tmp[:]) o, err = strconv.Unquote(o) if err != nil { o = string(tmp[:]) } s.Similarity = &o case "store": var tmp any dec.Decode(&tmp) switch v := tmp.(type) { case string: value, err := strconv.ParseBool(v) if err != nil { return fmt.Errorf("%s | %w", "Store", err) } s.Store = &value case bool: s.Store = &v } case "synthetic_source_keep": if err := dec.Decode(&s.SyntheticSourceKeep); err != nil { return fmt.Errorf("%s | %w", "SyntheticSourceKeep", err) } case "term_vector": if err := dec.Decode(&s.TermVector); err != nil { return fmt.Errorf("%s | %w", "TermVector", err) } case "type": if err := dec.Decode(&s.Type); err != nil { return fmt.Errorf("%s | %w", "Type", err) } } } return nil } // MarshalJSON override marshalling to include literal value func (s TextProperty) MarshalJSON() ([]byte, error) { type innerTextProperty TextProperty tmp := innerTextProperty{ Analyzer: s.Analyzer, Boost: s.Boost, CopyTo: s.CopyTo, Dynamic: s.Dynamic, EagerGlobalOrdinals: s.EagerGlobalOrdinals, Fielddata: s.Fielddata, FielddataFrequencyFilter: s.FielddataFrequencyFilter, Fields: s.Fields, IgnoreAbove: s.IgnoreAbove, Index: s.Index, IndexOptions: s.IndexOptions, IndexPhrases: s.IndexPhrases, IndexPrefixes: s.IndexPrefixes, Meta: s.Meta, Norms: s.Norms, PositionIncrementGap: s.PositionIncrementGap, Properties: s.Properties, SearchAnalyzer: s.SearchAnalyzer, SearchQuoteAnalyzer: s.SearchQuoteAnalyzer, Similarity: s.Similarity, Store: s.Store, SyntheticSourceKeep: s.SyntheticSourceKeep, TermVector: s.TermVector, Type: s.Type, } tmp.Type = "text" return json.Marshal(tmp) } // NewTextProperty returns a TextProperty. func NewTextProperty() *TextProperty { r := &TextProperty{ Fields: make(map[string]Property), Meta: make(map[string]string), Properties: make(map[string]Property), } return r } // true type TextPropertyVariant interface { TextPropertyCaster() *TextProperty } func (s *TextProperty) TextPropertyCaster() *TextProperty { return s }