//[AllowAnonymous] public IHttpActionResult Post(IndexSearch search) { if (!base.ModelState.IsValid) return base.BadRequest(base.ModelState); search.SearchResult = new SearchResult(); var personResults = GetPeople(search); if (personResults.Hits != null) { search.SearchResult.TotalHits = personResults.HitsMetaData.Total; var result = personResults.Hits.Select(h => h.Source).ToList(); AddPersonSearchHitsToSearchObject(result, search); if (search.SearchResult.Hits.Count > 0) { return base.Json(search, new Newtonsoft.Json.JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() }); } } return base.BadRequest("Search result could not be loaded."); }
//[AllowAnonymous] public IHttpActionResult Get() { var search = new IndexSearch(); search.SearchResult = new SearchResult(); search.Sorts = new List<QuerySort>(); search.Id = "1"; var personResults = GetPeople(null); if (personResults.Hits != null) { search.SearchResult.TotalHits = personResults.HitsMetaData.Total; var result = personResults.Hits.Select(h => h.Source).ToList(); AddPersonSearchHitsToSearchObject(result, search); if (search.SearchResult.Hits.Count > 0) { return base.Json(search, new Newtonsoft.Json.JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() }); } } return base.BadRequest("Search result could not be loaded."); }
/// <summary> /// Retrieves a single person object from ElasticSearch /// </summary> /// <param name="search">Tyler.WebApps.Search.Models.IndexSearch</param> /// <param name="key">int</param> /// <returns>Nest.ISearchResponse<T></returns> private ISearchResponse<Person> GetPerson (IndexSearch search, int key, List<string> excludedFields) { if (search == null) search = ElasticSearchHelper.ConstructDefaultIndexSearchObject(); if (excludedFields != null && excludedFields.Count > 0) return searchHelper.elasticClient.Search<Person>(s => s .Index(searchHelper.searchDefinition.IndexName) .From(search.From) .Size(search.Size) .Query(q => q .Term(p => p.personId, key.ToString())) .Source(e => e.Exclude(excludedFields.ToArray()))); else return searchHelper.elasticClient.Search<Person>(s => s .Index(searchHelper.searchDefinition.IndexName) .From(search.From) .Size(search.Size) .Query(q => q .Term(p => p.personId, key.ToString()))); }
static void Main(string[] args) { IndexSearch.IndexSearchTest(); Console.ReadKey(true); }
public int FindIndex_Positive(int[] array) { return(IndexSearch.FindIndex(array)); }
public void FindIndex_ArgumentOutOfRangeException() { Assert.Throws <ArgumentOutOfRangeException>(() => IndexSearch.FindIndex(new int[1000])); }
public void FindIndex_ArgumentNullExeption(int[] array) { Assert.Throws <ArgumentNullException>(() => IndexSearch.FindIndex(array)); }
/// <summary> /// Retrieves a page of people from ElasticSearch. If search parameter provided is null, /// the default IndexSearch object is used. /// </summary> /// <param name="search">Tyler.WebApp.Search.Models.IndexSearch</param> /// <returns>ISearchResponse<T></returns> private ISearchResponse<Person> GetPeople(IndexSearch search) { if (search == null) search = ElasticSearchHelper.ConstructDefaultIndexSearchObject(); return searchHelper.elasticClient.Search<Person>(s => s .Index(searchHelper.searchDefinition.IndexName) .From(search.From) .Size(search.Size) .MatchAll().SortAscending(x => x.personId)); }
/// <summary> /// For each Person object provided in the list, a PersonSearchHit object is created and added /// to the provided IndexSearch.SearchResult.Hits collection. /// </summary> /// <param name="list">List<T></param> /// <param name="search">Tyler.WebApp.Search.Models.IndexSearch</param> private void AddPersonSearchHitsToSearchObject(List<Person> list, IndexSearch search) { foreach (Person p in list) { PersonSearchHit hit = new PersonSearchHit { personId = p.personId, firstName = p.firstName, lastName = p.lastName, middleName = p.middleName }; search.SearchResult.Hits.Add(hit); } }