Skip to content

Commit 48dc738

Browse files
committed
update docs on master
1 parent 6036056 commit 48dc738

File tree

3 files changed

+126
-14
lines changed

3 files changed

+126
-14
lines changed

docs/code-standards/serialization/formatters.asciidoc

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,59 @@ foreach (var formatter in formatters)
2828
visible.Add(formatter.Name);
2929
}
3030
visible.Should().BeEmpty();
31+
32+
Type GetFormatterTargetType(Type t)
33+
{
34+
var attribute = t.GetCustomAttribute<JsonFormatterAttribute>();
35+
36+
if (attribute == null)
37+
return null;
38+
39+
var formatterType = attribute.FormatterType;
40+
41+
if (formatterType.IsGenericType && !formatterType.IsConstructedGenericType)
42+
return null;
43+
44+
return formatterType.GetInterfaces()
45+
.Where(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IJsonFormatter<>))
46+
.Select(i => i.GetGenericArguments()[0])
47+
.Single();
48+
}
49+
50+
var typesAndProperties =
51+
from t in typeof(IElasticClient).Assembly.GetTypes().Concat(typeof(IElasticLowLevelClient).Assembly.GetTypes())
52+
let p = t.GetProperties()
53+
let typeHasFormatter = t.GetCustomAttribute<JsonFormatterAttribute>(false) != null
54+
let propertiesHaveFormatter = p.Any(pp => pp.GetCustomAttribute<JsonFormatterAttribute>(false) != null)
55+
where typeHasFormatter || propertiesHaveFormatter
56+
select new { Type = t, TypeHasFormatter = typeHasFormatter, Properties = p, PropertiesHaveFormatter = propertiesHaveFormatter };
57+
58+
var invalid = new List<string>();
59+
60+
foreach (var typeAndProperties in typesAndProperties)
61+
{
62+
if (typeAndProperties.TypeHasFormatter)
63+
{
64+
var t = typeAndProperties.Type;
65+
var f = GetFormatterTargetType(t);
66+
67+
if (f != null && t != f)
68+
invalid.Add($"{t.FullName} has IJsonFormatter<{f.FullName}>");
69+
}
70+
71+
if (typeAndProperties.PropertiesHaveFormatter)
72+
{
73+
foreach (var property in typeAndProperties.Properties)
74+
{
75+
var t = property.PropertyType;
76+
var f = GetFormatterTargetType(t);
77+
78+
if (f != null && t != f)
79+
invalid.Add($"property {property.Name} on {typeAndProperties.Type.FullName} has IJsonFormatter<{f.FullName}>");
80+
}
81+
}
82+
}
83+
84+
invalid.Should().BeEmpty();
3185
----
3286

docs/query-dsl.asciidoc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@ NEST exposes all of the full text queries available in Elasticsearch
4949

5050
* <<intervals-usage,Intervals Usage>>
5151

52-
* <<match-usage,Match Usage>>
53-
5452
* <<match-bool-prefix-usage,Match Bool Prefix Usage>>
5553

54+
* <<match-phrase-prefix-usage,Match Phrase Prefix Usage>>
55+
5656
* <<match-phrase-usage,Match Phrase Usage>>
5757

58-
* <<match-phrase-prefix-usage,Match Phrase Prefix Usage>>
58+
* <<match-usage,Match Usage>>
5959

6060
* <<multi-match-usage,Multi Match Usage>>
6161

@@ -71,13 +71,13 @@ include::query-dsl/full-text/common-terms/common-terms-usage.asciidoc[]
7171

7272
include::query-dsl/full-text/intervals/intervals-usage.asciidoc[]
7373

74-
include::query-dsl/full-text/match/match-usage.asciidoc[]
75-
7674
include::query-dsl/full-text/match-bool-prefix/match-bool-prefix-usage.asciidoc[]
7775

76+
include::query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc[]
77+
7878
include::query-dsl/full-text/match-phrase/match-phrase-usage.asciidoc[]
7979

80-
include::query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc[]
80+
include::query-dsl/full-text/match/match-usage.asciidoc[]
8181

8282
include::query-dsl/full-text/multi-match/multi-match-usage.asciidoc[]
8383

@@ -122,14 +122,14 @@ NEST exposes all of the term queries available in Elasticsearch
122122

123123
* <<term-query-usage,Term Query Usage>>
124124

125+
* <<terms-set-query-usage,Terms Set Query Usage>>
126+
125127
* <<terms-list-query-usage,Terms List Query Usage>>
126128

127129
* <<terms-lookup-query-usage,Terms Lookup Query Usage>>
128130

129131
* <<terms-query-usage,Terms Query Usage>>
130132

131-
* <<terms-set-query-usage,Terms Set Query Usage>>
132-
133133
* <<wildcard-query-usage,Wildcard Query Usage>>
134134

135135
See the Elasticsearch documentation on {ref_current}/term-level-queries.html[Term level queries] for more details.
@@ -160,14 +160,14 @@ include::query-dsl/term-level/regexp/regexp-query-usage.asciidoc[]
160160

161161
include::query-dsl/term-level/term/term-query-usage.asciidoc[]
162162

163+
include::query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc[]
164+
163165
include::query-dsl/term-level/terms/terms-list-query-usage.asciidoc[]
164166

165167
include::query-dsl/term-level/terms/terms-lookup-query-usage.asciidoc[]
166168

167169
include::query-dsl/term-level/terms/terms-query-usage.asciidoc[]
168170

169-
include::query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc[]
170-
171171
include::query-dsl/term-level/wildcard/wildcard-query-usage.asciidoc[]
172172

173173
[[compound-queries]]
@@ -283,10 +283,10 @@ Specialized types of queries that do not fit into other groups
283283

284284
* <<rank-feature-query-usage,Rank Feature Query Usage>>
285285

286-
* <<script-query-usage,Script Query Usage>>
287-
288286
* <<script-score-query-usage,Script Score Query Usage>>
289287

288+
* <<script-query-usage,Script Query Usage>>
289+
290290
* <<shape-query-usage,Shape Query Usage>>
291291

292292
See the Elasticsearch documentation on {ref_current}/specialized-queries.html[Specialized queries] for more details.
@@ -305,10 +305,10 @@ include::query-dsl/specialized/pinned/pinned-query-usage.asciidoc[]
305305

306306
include::query-dsl/specialized/rank-feature/rank-feature-query-usage.asciidoc[]
307307

308-
include::query-dsl/specialized/script/script-query-usage.asciidoc[]
309-
310308
include::query-dsl/specialized/script-score/script-score-query-usage.asciidoc[]
311309

310+
include::query-dsl/specialized/script/script-query-usage.asciidoc[]
311+
312312
include::query-dsl/specialized/shape/shape-query-usage.asciidoc[]
313313

314314
[[span-queries]]

docs/query-dsl/full-text/intervals/intervals-usage.asciidoc

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,3 +249,61 @@ new IntervalsQuery
249249
}
250250
----
251251

252+
[float]
253+
=== Fuzzy rules
254+
255+
Fuzzy rules can be used to match terms that are similar to the provided term, within an edit distance defined by Fuzziness.
256+
If the fuzzy expansion matches more than 128 terms, Elasticsearch returns an error.
257+
258+
NOTE: Only available in Elasticsearch 7.6.0+
259+
260+
==== Fluent DSL example
261+
262+
[source,csharp]
263+
----
264+
q
265+
.Intervals(c => c
266+
.Field(p => p.Description)
267+
.Name("named_query")
268+
.Boost(1.1)
269+
.Fuzzy(m => m
270+
.Term(IntervalsFuzzy)
271+
.Fuzziness(Fuzziness.Auto)
272+
)
273+
)
274+
----
275+
276+
==== Object Initializer syntax example
277+
278+
[source,csharp]
279+
----
280+
new IntervalsQuery
281+
{
282+
Field = Field<Project>(p => p.Description),
283+
Name = "named_query",
284+
Boost = 1.1,
285+
Fuzzy = new IntervalsFuzzy
286+
{
287+
Term = IntervalsFuzzy,
288+
Fuzziness = Fuzziness.Auto
289+
}
290+
}
291+
----
292+
293+
[source,javascript]
294+
.Example json output
295+
----
296+
{
297+
"intervals": {
298+
"description": {
299+
"_name": "named_query",
300+
"boost": 1.1,
301+
"fuzzy": {
302+
"term": "lorem",
303+
"fuzziness": "AUTO"
304+
}
305+
}
306+
}
307+
}
308+
----
309+

0 commit comments

Comments
 (0)