@@ -94,9 +94,6 @@ protected override LazyResponses ClientUsage() => Calls(
9494 . Default ( "tfidf" , c => c
9595 . DiscountOverlaps ( )
9696 )
97- . DFI ( "dfi" , df => df
98- . IndependenceMeasure ( DFIIndependenceMeasure . ChiSquared )
99- )
10097 . DFR ( "dfr" , df => df
10198 . AfterEffect ( DFRAfterEffect . B )
10299 . BasicModel ( DFRBasicModel . D )
@@ -136,11 +133,6 @@ protected override LazyResponses ClientUsage() => Calls(
136133 DiscountOverlaps = true
137134 }
138135 } ,
139- { "dfi" , new DFISimilarity
140- {
141- IndependenceMeasure = DFIIndependenceMeasure . ChiSquared
142- }
143- } ,
144136 { "dfr" , new DFRSimilarity
145137 {
146138 AfterEffect = DFRAfterEffect . B ,
@@ -190,11 +182,95 @@ protected override void ExpectResponse(ICreateIndexResponse response)
190182 similarities . Should ( ) . NotBeNull ( ) ;
191183 similarities . Should ( ) . ContainKey ( "bm25" ) . WhichValue . Should ( ) . BeOfType < BM25Similarity > ( ) ;
192184 similarities . Should ( ) . ContainKey ( "tfidf" ) . WhichValue . Should ( ) . BeOfType < DefaultSimilarity > ( ) ;
193- similarities . Should ( ) . ContainKey ( "dfi" ) . WhichValue . Should ( ) . BeOfType < DFISimilarity > ( ) ;
194185 similarities . Should ( ) . ContainKey ( "dfr" ) . WhichValue . Should ( ) . BeOfType < DFRSimilarity > ( ) ;
195186 similarities . Should ( ) . ContainKey ( "ib" ) . WhichValue . Should ( ) . BeOfType < IBSimilarity > ( ) ;
196187 similarities . Should ( ) . ContainKey ( "lmd" ) . WhichValue . Should ( ) . BeOfType < LMDirichletSimilarity > ( ) ;
197188 similarities . Should ( ) . ContainKey ( "lmj" ) . WhichValue . Should ( ) . BeOfType < LMJelinekMercerSimilarity > ( ) ;
198189 }
199190 }
191+
192+ [ SkipVersion ( "<2.3.0" , "DFI Not supported prior to 2.3.0" ) ]
193+ public class CreateIndexDFIApiTests : ApiIntegrationTestBase < WritableCluster , ICreateIndexResponse , ICreateIndexRequest , CreateIndexDescriptor , CreateIndexRequest >
194+ {
195+ public CreateIndexDFIApiTests ( WritableCluster cluster , EndpointUsage usage ) : base ( cluster , usage ) { }
196+ protected override LazyResponses ClientUsage ( ) => Calls (
197+ fluent : ( client , f ) => client . CreateIndex ( CallIsolatedValue , f ) ,
198+ fluentAsync : ( client , f ) => client . CreateIndexAsync ( CallIsolatedValue , f ) ,
199+ request : ( client , r ) => client . CreateIndex ( r ) ,
200+ requestAsync : ( client , r ) => client . CreateIndexAsync ( r )
201+ ) ;
202+
203+ protected override bool ExpectIsValid => true ;
204+ protected override int ExpectStatusCode => 200 ;
205+ protected override HttpMethod HttpMethod => HttpMethod . PUT ;
206+ protected override string UrlPath => $ "/{ CallIsolatedValue } ";
207+
208+ protected override object ExpectJson { get ; } = new
209+ {
210+ settings = new Dictionary < string , object >
211+ {
212+ { "index.number_of_replicas" , 1 } ,
213+ { "index.number_of_shards" , 1 } ,
214+ { "similarity" , new
215+ {
216+ dfi = new
217+ {
218+ independence_measure = "chisquared" ,
219+ type = "DFI"
220+ }
221+ }
222+ }
223+ }
224+ } ;
225+
226+ protected override CreateIndexDescriptor NewDescriptor ( ) => new CreateIndexDescriptor ( CallIsolatedValue ) ;
227+
228+ protected override Func < CreateIndexDescriptor , ICreateIndexRequest > Fluent => d => d
229+ . Settings ( s => s
230+ . NumberOfReplicas ( 1 )
231+ . NumberOfShards ( 1 )
232+ . Similarity ( si => si
233+ . DFI ( "dfi" , df => df
234+ . IndependenceMeasure ( DFIIndependenceMeasure . ChiSquared )
235+ )
236+ )
237+ ) ;
238+
239+ protected override CreateIndexRequest Initializer => new CreateIndexRequest ( CallIsolatedValue )
240+ {
241+ Settings = new Nest . IndexSettings ( )
242+ {
243+ NumberOfReplicas = 1 ,
244+ NumberOfShards = 1 ,
245+ Similarity = new Similarities
246+ {
247+ { "dfi" , new DFISimilarity
248+ {
249+ IndependenceMeasure = DFIIndependenceMeasure . ChiSquared
250+ }
251+ }
252+ }
253+ }
254+ } ;
255+
256+ protected override void ExpectResponse ( ICreateIndexResponse response )
257+ {
258+ response . ShouldBeValid ( ) ;
259+ response . Acknowledged . Should ( ) . BeTrue ( ) ;
260+
261+ var indexSettings = this . Client . GetIndexSettings ( g => g . Index ( CallIsolatedValue ) ) ;
262+
263+ indexSettings . ShouldBeValid ( ) ;
264+ indexSettings . Indices . Should ( ) . NotBeEmpty ( ) . And . ContainKey ( CallIsolatedValue ) ;
265+
266+ var settings = indexSettings . Indices [ CallIsolatedValue ] ;
267+
268+ settings . Settings . NumberOfShards . Should ( ) . Be ( 1 ) ;
269+ settings . Settings . NumberOfReplicas . Should ( ) . Be ( 1 ) ;
270+ var similarities = settings . Settings . Similarity ;
271+
272+ similarities . Should ( ) . NotBeNull ( ) ;
273+ similarities . Should ( ) . ContainKey ( "dfi" ) . WhichValue . Should ( ) . BeOfType < DFISimilarity > ( ) ;
274+ }
275+ }
200276}
0 commit comments