CAST supports Elasticsearch via its NoSQL for .NET extension. Details about how this support is provided for .NET source code is discussed below. |
Elasticsearch.NET | |
NEST |
Operation | Methods Supported | ||
---|---|---|---|
Insert |
| ||
Update |
| ||
Select |
| ||
Delete |
|
Icon | Description |
---|---|
DotNet Elasticsearch Cluster | |
DotNet Elasticsearch Index | |
DotNet Unknown Elasticsearch Index |
Links are created for transaction and function point needs:
Link type | Source and destination of link | Methods supported |
---|---|---|
belongsTo | From DotNet Elasticsearch Index object to DotNet Elasticsearch Cluster object | |
useLink | Between the caller .NET Class / Method objects and DotNet Elasticsearch Index objects |
|
useInsertLink |
| |
useDeleteLink |
| |
useSelectLink |
| |
useUpdateLink |
|
Once the analysis/snapshot generation has completed, you can view the results in the normal manner (for example via CAST Enlighten). Some examples are shown below.
class HighLevel { public void UsingConnectionPool() { var uris = new[] { new Uri("http://localhost:9200"), new Uri("http://localhost:9201"), new Uri("http://localhost:9202"), }; var connectionPool = new SniffingConnectionPool(uris); var settings = new ConnectionSettings(connectionPool) .DefaultIndex("people"); var client = new ElasticClient(settings); } } |
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="resizer" type="ImageResizer.ResizerSection,ImageResizer" requirePermission="false" /> <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <section name="rockConfig" type="Rock.Configuration.RockConfig, Rock" /> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <appSettings> <add key="baseUrl" value="http://127.0.0.1:9200" /> <add key="AllowDuplicateGroupMembers" value="false" /> <add key="EnableRedisCacheCluster" value="False" /> <add key="RedisPassword" value="" /> <add key="RedisEndpointList" value="" /> <add key="RedisDatabaseNumber" value="0" /> <add key="CacheManagerEnableStatistics" value="False" /> </appSettings> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.2.1.0" newVersion="5.2.1.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.IdentityModel.Protocol.Extensions" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.0.40306.1554" newVersion="1.0.40306.1554" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.AspNetCore.DataProtection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> <system.codedom> <compilers> <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <providerOption name="UseAspNetSettings" value="false" /> </compiler> </compilers> </system.codedom> </configuration> |
Insert Operation(Elasticsearch.Net and NEST)
public void Indexing() { var person = new Person { Id = 1, FirstName = "Martijn", LastName = "Laarman" }; var ndexResponse = client.IndexDocument(person); //<1> } |
public async Task IndexingAsync() { var person = new Person { Id = 2, FirstName = "Jack", LastName = "Mas" }; var asyncIndexResponse = await client.IndexDocumentAsync(person); } |
public static bool updateDocument(string searchID, string first_name, string last_name) { bool status; //Update by Partial Document var response = client.Update<DocumentAttributes, UpdateDocumentAttributes>(searchID, d => d .Index(index) .Doc(new UpdateDocumentAttributes { FirstName = first_name, LastName = last_name })); } |
public void SearchingOnDefaultIndex() { var searchResponse = client.Search<Person>(s => s .From(0) .Size(10) .Query(q => q .Match(m => m .Field(f => f.FirstName) .Query("Martijn") ) ) ); var people = searchResponse.Documents; } |
public static bool deleteDocument(string index, string searchID) { bool status; var response = client.Delete<DocumentAttributes>(searchID, d => d .Index(index)); if (response.IsValid) { status = true; } else { status = false; } return status; } |
public void BulkOperations() { var people = new object[] { new { index = new { _index = "people", _type = "person", _id = "1" }}, new { FirstName = "Martijn", LastName = "Laarman" }, new { index = new { _index = "people", _type = "person", _id = "2" }}, new { FirstName = "Greg", LastName = "Marzouka" }, new { index = new { _index = "people", _type = "person", _id = "3" }}, new { FirstName = "Russ", LastName = "Cam" }, }; var ndexResponse = lowlevelClient.Bulk<StringResponse>(PostData.MultiJson(people)); string responseStream = ndexResponse.Body; } |
public void BulkOperationsUsingFluentDSL () { var result = client.Bulk(b => b .Index<Person>(i => i .Document(new Person {Id = 2}) ) .Create<Person>(c => c .Document(new Person { Id = 3 }) ) .Delete<Person>(d => d .Document(new Person { Id = 4 }) )); } |