Package org.leskes.test.elasticfacets.facets

Source Code of org.leskes.test.elasticfacets.facets.HashedStringsFacetMultiTermsTest

package org.leskes.test.elasticfacets.facets;

import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
import org.elasticsearch.action.admin.indices.settings.UpdateSettingsRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.search.facet.terms.TermsFacet;
import org.testng.annotations.Test;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;

/**
*
*/
public class HashedStringsFacetMultiTermsTest extends AbstractFacetTest {

   protected long documentCount =0;

   @Override
   protected void configureNodeSettings(ImmutableSettings.Builder settingsBuilder) {
      super.configureNodeSettings(settingsBuilder);
   }

   @Test
  public void DynamicSettingsTest() throws Exception {

    for (int i = 0; i < numberOfRuns(); i++) {

         // IMPORTANT _ excluded terms do not count for ANYTHING, also not doc term counts..

         String settingsSource = XContentFactory.jsonBuilder().startObject()
                 .startObject("hashed_strings").startObject("field").startObject("tags")
                 .field("max_terms_per_doc", 10 + i)
                 .startArray("exclude").value("ignoredterm").endArray()
                 .field("exclude_regex","ignoredterm\\d")
                 .endObject().endObject().endObject().string();
         Settings settings = ImmutableSettings.settingsBuilder().loadFromSource(settingsSource).build();
         client.admin().indices().updateSettings(new UpdateSettingsRequest(settings,"test"))
                 .actionGet();

         client.admin().indices().clearCache(new ClearIndicesCacheRequest()).actionGet();

      SearchResponse searchResponse = client
          .prepareSearch()
          .setSearchType(SearchType.COUNT)
          .setFacets(
                       XContentFactory.jsonBuilder().startObject()
                               .startObject("facet1")
                               .startObject("hashed_terms")
                               .field("field", "tags")
                               .field("size", maxTermCount()).endObject()
                               .endObject().endObject().bytes()).execute()
          .actionGet();

      assertThat(searchResponse.hits().totalHits(), equalTo(documentCount));
      assertThat(searchResponse.hits().hits().length, equalTo(0));
      TermsFacet facet = searchResponse.facets().facet("facet1");
      assertThat(facet.name(), equalTo("facet1"));
      assertThat(facet.entries().size(), equalTo(10 + i));
      assertThat(facet.entries().get(0).term(),equalTo("term_0"));
      assertThat(facet.entries().get(0).count(), equalTo(10+i));
      assertThat(facet.entries().get(1).term(),equalTo("term_1"));
      assertThat(facet.entries().get(1).count(), equalTo(9+i));
    }
   }

   @Override
  protected void loadData() throws Exception  {

      int max_term_count = maxTermCount();

      client.prepareIndex("test", "type1")
              .setSource("{ \"otherfield\" : 1 }")
              .execute().actionGet();
      documentCount++;

      for (int i=1;i<=max_term_count;i++) {
         StringBuilder sb = new StringBuilder("[");
         for (int j=0;j<i;j++) {
            sb.append("\"").append(getTerm(j,i%2 == 0)).append("\",");
         }
         sb.append(" \"ignoredTerm\", \"ignoredTerm2\" ]");

         client.prepareIndex("test", "type1")
                 .setSource(String.format("{ \"tags\" : %s }", sb.toString()))
                 .execute().actionGet();
         documentCount++;
      }
  }

   protected String getTerm(int i) {
      return getTerm(i,true);
   }

   protected String getTerm(int i,boolean lowerCase) {
      return String.format(lowerCase ? "term_%s" : "Term_%s",i);
   }



   protected int maxTermCount() {
      return 100;
   }

}
TOP

Related Classes of org.leskes.test.elasticfacets.facets.HashedStringsFacetMultiTermsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.