2424import java .util .List ;
2525import java .util .stream .IntStream ;
2626
27+ import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertAcked ;
28+ import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertHitCount ;
29+
2730@ LuceneTestCase .SuppressCodecs ("*" ) // only use our own codecs
2831public class DirectIOIT extends ESIntegTestCase {
2932
@@ -33,30 +36,31 @@ protected Collection<Class<? extends Plugin>> nodePlugins() {
3336 }
3437
3538 private void indexVectors () {
36- internalCluster ().startNode ();
37- prepareCreate ("vectors" ).setSettings (Settings .builder ().put (InternalSettingsPlugin .USE_COMPOUND_FILE .getKey (), false ))
38- .setMapping ("""
39- {
40- "properties": {
41- "vector": {
42- "type": "dense_vector",
43- "dims": 64,
44- "element_type": "float",
45- "index": true,
46- "similarity": "l2_norm",
47- "index_options": {
48- "type": "bbq_flat"
39+ assertAcked (
40+ prepareCreate ("foo-vectors" ).setSettings (Settings .builder ().put (InternalSettingsPlugin .USE_COMPOUND_FILE .getKey (), false ))
41+ .setMapping ("""
42+ {
43+ "properties": {
44+ "fooVector": {
45+ "type": "dense_vector",
46+ "dims": 64,
47+ "element_type": "float",
48+ "index": true,
49+ "similarity": "l2_norm",
50+ "index_options": {
51+ "type": "bbq_flat"
52+ }
53+ }
4954 }
5055 }
51- }
52- }
53- """ )
54- .get ();
55- ensureGreen ("vectors" );
56+ """ )
57+ );
58+ ensureGreen ("foo-vectors" );
5659
5760 for (int i = 0 ; i < 1000 ; i ++) {
58- indexDoc ("vectors" , Integer .toString (i ), "vector " , IntStream .range (0 , 64 ).mapToDouble (d -> randomFloat ()).toArray ());
61+ indexDoc ("foo- vectors" , Integer .toString (i ), "fooVector " , IntStream .range (0 , 64 ).mapToDouble (d -> randomFloat ()).toArray ());
5962 }
63+ refresh ();
6064 }
6165
6266 @ TestLogging (value = "org.elasticsearch.index.store.FsDirectoryFactory:DEBUG" , reason = "to capture trace logging for direct IO" )
@@ -75,11 +79,14 @@ public void testDirectIOUsed() {
7579 indexVectors ();
7680
7781 // do a search
78- prepareSearch ("vectors" ).setKnnSearch (
79- List .of (new KnnSearchBuilder ("vector" , new VectorData (null , new byte [64 ]), 10 , 20 , null , null ))
80- ).get ();
81-
82+ var knn = List .of (new KnnSearchBuilder ("fooVector" , new VectorData (null , new byte [64 ]), 10 , 20 , null , null ));
83+ assertHitCount (prepareSearch ("foo-vectors" ).setKnnSearch (knn ), 10 );
8284 mockLog .assertAllExpectationsMatched ();
8385 }
8486 }
87+
88+ @ Override
89+ protected boolean addMockFSIndexStore () {
90+ return false ; // we require to always use the "real" hybrid directory
91+ }
8592}
0 commit comments