public FieldSortDescriptor Nested(NestedSortDescriptor descriptor) =>
 Assign(descriptor, (a, v) => a._nestedSortDescriptor = v);
    protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
    {
        writer.WriteStartObject();
        writer.WritePropertyName(settings.Inferrer.Field(_field));
        writer.WriteStartObject();

        if (_order.HasValue)
        {
            writer.WritePropertyName("order");
            JsonSerializer.Serialize(writer, _order.Value, options);
        }

        if (_missing is not null)
        {
            writer.WritePropertyName("missing");
            JsonSerializer.Serialize(writer, _missing, options);
        }

        if (_sortMode is not null)
        {
            writer.WritePropertyName("mode");
            JsonSerializer.Serialize(writer, _sortMode, options);
        }

        if (!string.IsNullOrEmpty(_format))
        {
            writer.WritePropertyName("format");
            writer.WriteStringValue(_format);
        }

        if (_ignoreUnmappedFields.HasValue)
        {
            writer.WritePropertyName("ignore_unmapped");
            JsonSerializer.Serialize(writer, _ignoreUnmappedFields.Value, options);
        }

        if (_nestedSort is not null)
        {
            writer.WritePropertyName("nested");
            JsonSerializer.Serialize(writer, _nestedSort, options);
        }
        else if (_nestedSortDescriptor is not null)
        {
            writer.WritePropertyName("nested");
            JsonSerializer.Serialize(writer, _nestedSortDescriptor, options);
        }
        else if (_nestedSortDescriptorAction is not null)
        {
            writer.WritePropertyName("nested");
            var descriptor = new NestedSortDescriptor();
            _nestedSortDescriptorAction(descriptor);
            JsonSerializer.Serialize(writer, descriptor, options);
        }

        if (_unmappedType.HasValue)
        {
            writer.WritePropertyName("unmapped_type");
            JsonSerializer.Serialize(writer, _unmappedType.Value, options);
        }

        writer.WriteEndObject();
        writer.WriteEndObject();
    }
Example #3
0
    protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
    {
        writer.WriteStartObject();
        writer.WritePropertyName("_script");
        writer.WriteStartObject();

        if (_order.HasValue)
        {
            writer.WritePropertyName("order");
            JsonSerializer.Serialize(writer, _order.Value, options);
        }

        if (_sortMode.HasValue)
        {
            writer.WritePropertyName("mode");
            JsonSerializer.Serialize(writer, _sortMode.Value, options);
        }

        if (_nestedSort is not null)
        {
            writer.WritePropertyName("nested");
            JsonSerializer.Serialize(writer, _nestedSort, options);
        }
        else if (_nestedSortDescriptor is not null)
        {
            writer.WritePropertyName("nested");
            JsonSerializer.Serialize(writer, _nestedSortDescriptor, options);
        }
        else if (_nestedSortDescriptorAction is not null)
        {
            writer.WritePropertyName("nested");
            var descriptor = new NestedSortDescriptor();
            _nestedSortDescriptorAction(descriptor);
            JsonSerializer.Serialize(writer, descriptor, options);
        }

        if (_script is not null)
        {
            writer.WritePropertyName("script");
            JsonSerializer.Serialize(writer, _script, options);
        }
        else if (_inlineScriptDescriptor is not null)
        {
            writer.WritePropertyName("script");
            JsonSerializer.Serialize(writer, _inlineScriptDescriptor, options);
        }
        else if (_inlineScriptDescriptorAction is not null)
        {
            writer.WritePropertyName("script");
            var descriptor = new InlineScriptDescriptor();
            _inlineScriptDescriptorAction(descriptor);
            JsonSerializer.Serialize(writer, descriptor, options);
        }

        if (_scriptSortType.HasValue)
        {
            writer.WritePropertyName("type");
            JsonSerializer.Serialize(writer, _scriptSortType.Value, options);
        }

        writer.WriteEndObject();
        writer.WriteEndObject();
    }