private string GenerateDeleteItemsCommandText(string indexName, string idField, List <ElasticSearchItem> elasticSearchItems)
        {
            var idsToDelete = new List <string>();

            foreach (var item in elasticSearchItems)
            {
                idsToDelete.Add(ElasticSearchEtl.LowerCaseDocumentIdProperty(item.DocumentId));
            }

            using (var context = JsonOperationContext.ShortTermSingleUse())
            {
                var result = new DynamicJsonValue()
                {
                    ["query"] = new DynamicJsonValue()
                    {
                        ["terms"] = new DynamicJsonValue()
                        {
                            [idField] = new DynamicJsonArray(idsToDelete)
                        }
                    }
                };

                var resultJson = context.ReadObject(result, "").ToString();

                var sb = new StringBuilder("POST ")
                         .Append(indexName)
                         .AppendLine("/_delete_by_query?refresh=true")
                         .AppendLine(resultJson);

                return(sb.ToString());
            }
        }
        protected override void LoadToFunction(string indexName, ScriptRunnerResult document)
        {
            if (indexName == null)
            {
                ThrowLoadParameterIsMandatory(nameof(indexName));
            }

            var result = document.TranslateToObject(Context);


            var index = GetOrAdd(indexName);

            if (result.TryGet(index.DocumentIdProperty, out object _) == false)
            {
                result.Modifications = new DynamicJsonValue
                {
                    [index.DocumentIdProperty] = ElasticSearchEtl.LowerCaseDocumentIdProperty(Current.Document.Id)
                };
            }

            index.Inserts.Add(new ElasticSearchItem(Current)
            {
                TransformationResult = result
            });
        }