Skip to content

Commit

Permalink
Deserialise analyzers without a type (#5435)
Browse files Browse the repository at this point in the history
  • Loading branch information
stevejgordon authored Mar 23, 2021
1 parent 2ae9341 commit 5898d79
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 4 deletions.
5 changes: 1 addition & 4 deletions src/Nest/Analysis/Analyzers/AnalyzerFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@ public IAnalyzer Deserialize(ref JsonReader reader, IJsonFormatterResolver forma
break;
}
}

if (analyzerType == null)
return null;


segmentReader = new JsonReader(arraySegment.Array, arraySegment.Offset);

switch (analyzerType)
Expand Down
105 changes: 105 additions & 0 deletions tests/Tests.Reproduce/GitHubIssue5432.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information

using System;
using System.Linq;
using System.Text;
using Elastic.Elasticsearch.Xunit.XunitPlumbing;
using FluentAssertions;
using Nest;
using Tests.Core.Client;

namespace Tests.Reproduce
{
public class GitHubIssue5432
{
[U]
public void DeserializesAnalyzers()
{
const string json = @"{
""analyzer-test"": {
""aliases"": {},
""mappings"": {},
""settings"": {
""index"": {
""routing"": {
""allocation"": {
""include"": {
""_tier_preference"": ""data_content""
}
}
},
""number_of_shards"": ""1"",
""provided_name"": ""analyzer-test"",
""creation_date"": ""1616482422981"",
""analysis"": {
""filter"": {
""autocomplete_ngram"": {
""type"": ""edge_ngram"",
""min_gram"": ""3"",
""max_gram"": ""20""
}
},
""analyzer"": {
""search_autocomplete"": {
""filter"": [
""lowercase""
],
""tokenizer"": ""keyword""
},
""index_autocomplete"": {
""filter"": [
""lowercase"",
""autocomplete_ngram""
],
""tokenizer"": ""keyword""
}
}
},
""number_of_replicas"": ""1"",
""uuid"": ""g8qnTA5wTveRCQnQN6xa3A"",
""version"": {
""created"": ""7110099""
}
}
}
}
}";

var bytes = Encoding.UTF8.GetBytes(json);
var client = TestClient.FixedInMemoryClient(bytes);
var response = client.Indices.Get("analyzer-test");

var analyzers = response.Indices.Values.First().Settings.Analysis.Analyzers.Values;
analyzers.Count.Should().Be(2);

foreach(var a in analyzers)
{
a.Should().NotBeNull();
}

if (response.Indices.Values.First().Settings.Analysis.Analyzers.TryGetValue("search_autocomplete", out var analyzerOne))
{
var customAnalyzer = analyzerOne as CustomAnalyzer;
customAnalyzer.Should().NotBeNull();
customAnalyzer!.Filter.Count().Should().Be(1);
}
else
{
throw new Exception("Expected index_autocomplete analyzer was not found.");
}

if (response.Indices.Values.First().Settings.Analysis.Analyzers.TryGetValue("index_autocomplete", out var analyzerTwo))
{
var customAnalyzer = analyzerTwo as CustomAnalyzer;
customAnalyzer.Should().NotBeNull();
customAnalyzer!.Filter.Count().Should().Be(2);
}
else
{
throw new Exception("Expected index_autocomplete analyzer was not found.");
}
}
}
}

0 comments on commit 5898d79

Please sign in to comment.