//[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&lt;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())));
    }
Пример #4
0
 static void Main(string[] args)
 {
     IndexSearch.IndexSearchTest();
     Console.ReadKey(true);
 }
Пример #5
0
 public int FindIndex_Positive(int[] array)
 {
     return(IndexSearch.FindIndex(array));
 }
Пример #6
0
 public void FindIndex_ArgumentOutOfRangeException()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => IndexSearch.FindIndex(new int[1000]));
 }
Пример #7
0
 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&lt;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&lt;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);
      }
    }