diff --git a/source/Novicell.Examine.ElasticSearch.Tests/Index/ElasticIndexTests.cs b/source/Novicell.Examine.ElasticSearch.Tests/Index/ElasticIndexTests.cs index e33503e..82c96f7 100644 --- a/source/Novicell.Examine.ElasticSearch.Tests/Index/ElasticIndexTests.cs +++ b/source/Novicell.Examine.ElasticSearch.Tests/Index/ElasticIndexTests.cs @@ -32,6 +32,7 @@ public void Rebuild_Index() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -51,6 +52,7 @@ public void Index_Exists() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -70,6 +72,7 @@ public void Can_Add_One_Document() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -120,6 +123,7 @@ public void Can_Add_Multiple_Docs() using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -146,6 +150,7 @@ public void Can_Delete() using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); diff --git a/source/Novicell.Examine.ElasticSearch.Tests/Novicell.Examine.ElasticSearch.Tests.csproj b/source/Novicell.Examine.ElasticSearch.Tests/Novicell.Examine.ElasticSearch.Tests.csproj index 9f3a3ad..bb6401b 100644 --- a/source/Novicell.Examine.ElasticSearch.Tests/Novicell.Examine.ElasticSearch.Tests.csproj +++ b/source/Novicell.Examine.ElasticSearch.Tests/Novicell.Examine.ElasticSearch.Tests.csproj @@ -39,8 +39,7 @@ True - ..\packages\ElasticsearchInside.7.1.2\lib\netstandard2.0\ElasticsearchInside.dll - True + ..\..\..\Elasticsearch-Inside\source\ElasticsearchInside\bin\Debug\netstandard2.0\ElasticsearchInside.dll ..\packages\Examine.1.0.1\lib\net452\Examine.dll diff --git a/source/Novicell.Examine.ElasticSearch.Tests/Search/FluentApiTests.cs b/source/Novicell.Examine.ElasticSearch.Tests/Search/FluentApiTests.cs index 1d25a76..ae158ca 100644 --- a/source/Novicell.Examine.ElasticSearch.Tests/Search/FluentApiTests.cs +++ b/source/Novicell.Examine.ElasticSearch.Tests/Search/FluentApiTests.cs @@ -22,7 +22,7 @@ public void Managed_Range_Date() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -76,7 +76,7 @@ public void Managed_Full_Text() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -143,7 +143,7 @@ public void Managed_Full_Text_With_Bool() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -218,7 +218,7 @@ public void Managed_Range_Int() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -270,7 +270,7 @@ public void Legacy_ParentId() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -323,15 +323,15 @@ public void Grouped_Or_Examiness() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); using (var indexer = new TestBaseIndex(config, - new FieldDefinitionCollection( - new FieldDefinition("nodeName", "text"), - new FieldDefinition("bodyText", "text"), - new FieldDefinition("nodeTypeAlias", "text") + new FieldDefinitionCollection( + new FieldDefinition("nodeName", "text"), + new FieldDefinition("bodyText", "text"), + new FieldDefinition("nodeTypeAlias", "text") ) ) ) @@ -386,7 +386,7 @@ public void Grouped_Or_Query_Output() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -449,7 +449,7 @@ public void Grouped_And_Query_Output() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -507,7 +507,7 @@ public void Grouped_Not_Query_Output() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -564,7 +564,7 @@ public void Grouped_Or_With_Not() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -608,10 +608,13 @@ public void Grouped_Or_With_Not() [Test] public void Match_By_Path() { - using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings - .EnableLogging() - - .SetElasticsearchStartTimeout(180)).ReadySync()) + using (var elasticsearch = new ElasticsearchInside.Elasticsearch( + settings => settings + .EnableLogging() + .SetPort(9200) + .SetElasticsearchStartTimeout(180)) + .ReadySync() + ) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); using (var indexer = new TestBaseIndex(config, @@ -640,7 +643,7 @@ public void Match_By_Path() indexer._client.Value.Indices.Refresh(Indices.Index(indexer.indexAlias)); - var searcher = (ElasticSearchSearcher)indexer.GetSearcher(); + var searcher = (ElasticSearchSearcher) indexer.GetSearcher(); //paths contain punctuation, we'll escape it and ensure an exact match var criteria = searcher.CreateQuery("content"); @@ -673,7 +676,7 @@ public void Find_By_ParentId() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -712,7 +715,7 @@ public void Find_By_NodeTypeAlias() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -759,6 +762,7 @@ public void Find_By_NodeTypeAlias() } } } + /* TODO: Figure out if we need that test [Test] public void Search_With_Stop_Words() @@ -816,7 +820,7 @@ public void Search_Raw_Query() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -869,11 +873,11 @@ public void Find_Only_Image_Media() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); - using (var indexer = new TestBaseIndex(config, + using (var indexer = new TestBaseIndex(config, new FieldDefinitionCollection( new FieldDefinition("nodeName", "text"), new FieldDefinition("bodyText", "text"), @@ -910,7 +914,7 @@ public void Find_Both_Media_And_Content() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -952,7 +956,7 @@ public void Sort_Result_By_Number_Field() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1000,7 +1004,7 @@ public void Sort_Result_By_Date_Field() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1052,60 +1056,61 @@ public void Sort_Result_By_Date_Field() } } } - /* TODO: As elastic doesn't support sorting on text fields by default figure out if should be added multifields defintion on every text field - [Test] - public void Sort_Result_By_Single_Field() - { - using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings - .EnableLogging() - - .SetElasticsearchStartTimeout(180)).ReadySync()) - { - ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); - using (var indexer = new TestBaseIndex(config, - //Ensure it's set to a fulltextsortable, otherwise it's not sortable - new FieldDefinitionCollection(new FieldDefinition("nodeName", "fulltextsortable")))) - - { - indexer.CreateIndex(); - indexer.IndexItems(new[] - { - ValueSet.FromObject(1.ToString(), "content", - new {nodeName = "my name 1", writerName = "administrator", parentID = "1143"}), - ValueSet.FromObject(2.ToString(), "content", - new {nodeName = "my name 2", writerName = "administrator", parentID = "1143"}), - ValueSet.FromObject(3.ToString(), "content", - new {nodeName = "my name 3", writerName = "administrator", parentID = "1143"}), - ValueSet.FromObject(4.ToString(), "content", - new {nodeName = "my name 4", writerName = "writer", parentID = "2222"}) - }); - - indexer._client.Value.Indices.Refresh(Indices.Index(indexer.indexAlias)); - var searcher = indexer.GetSearcher(); - - var sc = searcher.CreateQuery("content"); - var sc1 = sc.Field("writerName", "administrator") - .OrderBy(new SortableField("nodeName", SortType.String)); - - sc = searcher.CreateQuery("content"); - var sc2 = sc.Field("writerName", "administrator") - .OrderByDescending(new SortableField("nodeName", SortType.String)); - - var results1 = sc1.Execute(); - var results2 = sc2.Execute(); - - Assert.AreNotEqual(results1.First().Id, results2.First().Id); - } - } - } -*/ + /* TODO: As elastic doesn't support sorting on text fields by default figure out if should be added multifields defintion on every text field + [Test] + public void Sort_Result_By_Single_Field() + { + using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings + .EnableLogging() + + .SetElasticsearchStartTimeout(180)).ReadySync()) + { + ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); + using (var indexer = new TestBaseIndex(config, + //Ensure it's set to a fulltextsortable, otherwise it's not sortable + new FieldDefinitionCollection(new FieldDefinition("nodeName", "fulltextsortable")))) + + + { + indexer.CreateIndex(); + indexer.IndexItems(new[] + { + ValueSet.FromObject(1.ToString(), "content", + new {nodeName = "my name 1", writerName = "administrator", parentID = "1143"}), + ValueSet.FromObject(2.ToString(), "content", + new {nodeName = "my name 2", writerName = "administrator", parentID = "1143"}), + ValueSet.FromObject(3.ToString(), "content", + new {nodeName = "my name 3", writerName = "administrator", parentID = "1143"}), + ValueSet.FromObject(4.ToString(), "content", + new {nodeName = "my name 4", writerName = "writer", parentID = "2222"}) + }); + + indexer._client.Value.Indices.Refresh(Indices.Index(indexer.indexAlias)); + var searcher = indexer.GetSearcher(); + + var sc = searcher.CreateQuery("content"); + var sc1 = sc.Field("writerName", "administrator") + .OrderBy(new SortableField("nodeName", SortType.String)); + + sc = searcher.CreateQuery("content"); + var sc2 = sc.Field("writerName", "administrator") + .OrderByDescending(new SortableField("nodeName", SortType.String)); + + var results1 = sc1.Execute(); + var results2 = sc2.Execute(); + + Assert.AreNotEqual(results1.First().Id, results2.First().Id); + } + } + } + */ [Test] public void Standard_Results_Sorted_By_Score() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1158,7 +1163,7 @@ public void Skip_Results_Returns_Different_Results() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1198,7 +1203,7 @@ public void Escaping_Includes_All_Words() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1239,7 +1244,7 @@ public void Grouped_And_Examiness() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1285,7 +1290,7 @@ public void Examiness_Proximity() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1326,7 +1331,7 @@ public void Examiness_Proximity() var results = filter.Execute(); //Assert - - + Assert.AreEqual(2, results.TotalItemCount); } } @@ -1340,7 +1345,7 @@ public void Float_Range_SimpleIndexSet() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1391,7 +1396,7 @@ public void Number_Range_SimpleIndexSet() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1427,7 +1432,7 @@ public void Number_Range_SimpleIndexSet() //Act var results1 = filter1.Execute(); var results2 = filter2.Execute(); - + //Assert Assert.AreEqual(3, results1.TotalItemCount); Assert.AreEqual(1, results2.TotalItemCount); @@ -1443,7 +1448,7 @@ public void Double_Range_SimpleIndexSet() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); @@ -1487,7 +1492,7 @@ public void Double_Range_SimpleIndexSet() } } } - + /// /// test range query with a Double structure /// @@ -1496,7 +1501,7 @@ public void Long_Range_SimpleIndexSet() { using (var elasticsearch = new ElasticsearchInside.Elasticsearch(settings => settings .EnableLogging() - + .SetPort(9200) .SetElasticsearchStartTimeout(180)).ReadySync()) { ElasticSearchConfig config = new ElasticSearchConfig(new ConnectionSettings(elasticsearch.Url)); diff --git a/source/Novicell.Examine.ElasticSearch/ElasticSearchSearcher.cs b/source/Novicell.Examine.ElasticSearch/ElasticSearchSearcher.cs index b599812..58dfc25 100644 --- a/source/Novicell.Examine.ElasticSearch/ElasticSearchSearcher.cs +++ b/source/Novicell.Examine.ElasticSearch/ElasticSearchSearcher.cs @@ -53,11 +53,15 @@ public bool IndexExists { get { - var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); - if (indexesMappedToAlias.Count > 0) + var aliasExists = _client.Value.Indices.Exists(indexAlias).Exists; + if (aliasExists) { - _exists = true; - return true; + var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); + if (indexesMappedToAlias.Count > 0) + { + _exists = true; + return true; + } } _exists = false; @@ -88,7 +92,7 @@ public IProperties AllProperties var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); GetMappingResponse response = - _client.Value.Indices.GetMapping(new GetMappingRequest {IncludeTypeName = true}); + _client.Value.Indices.GetMapping(new GetMappingRequest {IncludeTypeName = false}); _fieldsMapping = response.GetMappingFor(indexesMappedToAlias[0]).Properties; return _fieldsMapping; } diff --git a/source/Novicell.Examine.ElasticSearch/Indexers/ElasticSearchBaseIndex.cs b/source/Novicell.Examine.ElasticSearch/Indexers/ElasticSearchBaseIndex.cs index 949e6be..6b17927 100644 --- a/source/Novicell.Examine.ElasticSearch/Indexers/ElasticSearchBaseIndex.cs +++ b/source/Novicell.Examine.ElasticSearch/Indexers/ElasticSearchBaseIndex.cs @@ -203,8 +203,11 @@ private void CreateNewIndex(bool indexExists) .Properties(ps => CreateFieldsMapping(ps, FieldDefinitionCollection)) )) ); - var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); - if (!indexExists || indexesMappedToAlias.Count == 0) + var aliasExists = _client.Value.Indices.Exists(indexAlias).Exists; + + + var indexesMappedToAlias = aliasExists? _client.Value.GetIndicesPointingToAlias(indexAlias).ToList() : new List(); + if (!indexExists || (aliasExists && indexesMappedToAlias?.Count == 0)) { var bulkAliasResponse = _client.Value.Indices.BulkAlias(ba => ba .Add(add => add.Index(indexName).Alias(indexAlias)) @@ -275,7 +278,8 @@ private BulkDescriptor ToElasticSearchDocs(IEnumerable docs, string in protected override void PerformIndexItems(IEnumerable op, Action onComplete) { - var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); + var aliasExists = _client.Value.Indices.Exists(indexAlias).Exists; + var indexesMappedToAlias = aliasExists ? _client.Value.GetIndicesPointingToAlias(indexAlias).ToList() : new List(); EnsureIndex(false); var indexTarget = isReindexing ? tempindexAlias : indexAlias; @@ -336,11 +340,15 @@ public override void CreateIndex() public override bool IndexExists() { - var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); - if (indexesMappedToAlias.Count > 0) + var aliasExists = _client.Value.Indices.Exists(indexAlias).Exists; + if (aliasExists) { - indexName = indexesMappedToAlias.FirstOrDefault(); - return true; + var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); + if (indexesMappedToAlias.Count > 0) + { + indexName = indexesMappedToAlias.FirstOrDefault(); + return true; + } } return false; @@ -348,13 +356,17 @@ public override bool IndexExists() public bool TempIndexExists() { - var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(indexAlias).ToList(); + var aliasExists = _client.Value.Indices.Exists(tempindexAlias).Exists; + if (aliasExists) + { + var indexesMappedToAlias = _client.Value.GetIndicesPointingToAlias(tempindexAlias).ToList(); if (indexesMappedToAlias.Count > 0) { indexName = indexesMappedToAlias.FirstOrDefault(); isReindexing = true; return true; } + } return false; } @@ -381,4 +393,4 @@ public IEnumerable GetFields() #endregion } -} +} \ No newline at end of file