summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/search
diff options
context:
space:
mode:
authorMasaru Hasegawa <haniomasali@gmail.com>2016-12-16 15:07:51 +0900
committerGitHub <noreply@github.com>2016-12-16 15:07:51 +0900
commita0185c83a7e0f0fd02b0594696a64513877ae1c4 (patch)
tree2f149bb6eb7e0cda7fc0430ee400d7771206ffbd /core/src/test/java/org/elasticsearch/search
parent41ffb008ad285735f8bc3c9b97b23c6589a17fef (diff)
parent3df2a086d4bf3c5608aabf06c1766e10c901af35 (diff)
Merge pull request #21393 from masaruh/alias_boost
Resolve index names in indices_boost
Diffstat (limited to 'core/src/test/java/org/elasticsearch/search')
-rw-r--r--core/src/test/java/org/elasticsearch/search/SearchServiceTests.java8
-rw-r--r--core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java74
-rw-r--r--core/src/test/java/org/elasticsearch/search/indicesboost/SimpleIndicesBoostSearchIT.java107
-rw-r--r--core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java23
4 files changed, 101 insertions, 111 deletions
diff --git a/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java b/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java
index 0d4d740aa3..0f62690360 100644
--- a/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java
+++ b/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java
@@ -186,7 +186,7 @@ public class SearchServiceTests extends ESSingleNodeTestCase {
try {
QuerySearchResultProvider querySearchResultProvider = service.executeQueryPhase(
new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT,
- new SearchSourceBuilder(), new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY)),
+ new SearchSourceBuilder(), new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f),
new SearchTask(123L, "", "", "", null));
IntArrayList intCursors = new IntArrayList(1);
intCursors.add(0);
@@ -221,7 +221,8 @@ public class SearchServiceTests extends ESSingleNodeTestCase {
new SearchSourceBuilder(),
new String[0],
false,
- new AliasFilter(null, Strings.EMPTY_ARRAY)),
+ new AliasFilter(null, Strings.EMPTY_ARRAY),
+ 1.0f),
null);
// the search context should inherit the default timeout
assertThat(contextWithDefaultTimeout.timeout(), equalTo(TimeValue.timeValueSeconds(5)));
@@ -235,7 +236,8 @@ public class SearchServiceTests extends ESSingleNodeTestCase {
new SearchSourceBuilder().timeout(TimeValue.timeValueSeconds(seconds)),
new String[0],
false,
- new AliasFilter(null, Strings.EMPTY_ARRAY)),
+ new AliasFilter(null, Strings.EMPTY_ARRAY),
+ 1.0f),
null);
// the search context should inherit the query timeout
assertThat(context.timeout(), equalTo(TimeValue.timeValueSeconds(seconds)));
diff --git a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java
index 101d35f778..8ec873704d 100644
--- a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java
@@ -314,4 +314,78 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
assertEquals("query", sourceAsMap.keySet().iterator().next());
}
}
+
+ public void testParseIndicesBoost() throws IOException {
+ {
+ String restContent = " { \"indices_boost\": {\"foo\": 1.0, \"bar\": 2.0}}";
+ try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
+ SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
+ searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
+ assertEquals(2, searchSourceBuilder.indexBoosts().size());
+ assertEquals(new SearchSourceBuilder.IndexBoost("foo", 1.0f), searchSourceBuilder.indexBoosts().get(0));
+ assertEquals(new SearchSourceBuilder.IndexBoost("bar", 2.0f), searchSourceBuilder.indexBoosts().get(1));
+ }
+ }
+
+ {
+ String restContent = "{" +
+ " \"indices_boost\" : [\n" +
+ " { \"foo\" : 1.0 },\n" +
+ " { \"bar\" : 2.0 },\n" +
+ " { \"baz\" : 3.0 }\n" +
+ " ]}";
+ try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
+ SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
+ searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
+ assertEquals(3, searchSourceBuilder.indexBoosts().size());
+ assertEquals(new SearchSourceBuilder.IndexBoost("foo", 1.0f), searchSourceBuilder.indexBoosts().get(0));
+ assertEquals(new SearchSourceBuilder.IndexBoost("bar", 2.0f), searchSourceBuilder.indexBoosts().get(1));
+ assertEquals(new SearchSourceBuilder.IndexBoost("baz", 3.0f), searchSourceBuilder.indexBoosts().get(2));
+ }
+ }
+
+ {
+ String restContent = "{" +
+ " \"indices_boost\" : [\n" +
+ " { \"foo\" : 1.0, \"bar\": 2.0}\n" + // invalid format
+ " ]}";
+
+ assertIndicesBoostParseErrorMessage(restContent, "Expected [END_OBJECT] in [indices_boost] but found [FIELD_NAME]");
+ }
+
+ {
+ String restContent = "{" +
+ " \"indices_boost\" : [\n" +
+ " {}\n" + // invalid format
+ " ]}";
+
+ assertIndicesBoostParseErrorMessage(restContent, "Expected [FIELD_NAME] in [indices_boost] but found [END_OBJECT]");
+ }
+
+ {
+ String restContent = "{" +
+ " \"indices_boost\" : [\n" +
+ " { \"foo\" : \"bar\"}\n" + // invalid format
+ " ]}";
+
+ assertIndicesBoostParseErrorMessage(restContent, "Expected [VALUE_NUMBER] in [indices_boost] but found [VALUE_STRING]");
+ }
+
+ {
+ String restContent = "{" +
+ " \"indices_boost\" : [\n" +
+ " { \"foo\" : {\"bar\": 1}}\n" + // invalid format
+ " ]}";
+
+ assertIndicesBoostParseErrorMessage(restContent, "Expected [VALUE_NUMBER] in [indices_boost] but found [START_OBJECT]");
+ }
+ }
+
+ private void assertIndicesBoostParseErrorMessage(String restContent, String expectedErrorMessage) throws IOException {
+ try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
+ ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(createParseContext(parser),
+ searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers));
+ assertEquals(expectedErrorMessage, e.getMessage());
+ }
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/indicesboost/SimpleIndicesBoostSearchIT.java b/core/src/test/java/org/elasticsearch/search/indicesboost/SimpleIndicesBoostSearchIT.java
deleted file mode 100644
index 168729d5c0..0000000000
--- a/core/src/test/java/org/elasticsearch/search/indicesboost/SimpleIndicesBoostSearchIT.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to Elasticsearch under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.elasticsearch.search.indicesboost;
-
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.action.search.SearchType;
-import org.elasticsearch.test.ESIntegTestCase;
-
-import static org.elasticsearch.client.Requests.indexRequest;
-import static org.elasticsearch.client.Requests.searchRequest;
-import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
-import static org.elasticsearch.index.query.QueryBuilders.termQuery;
-import static org.elasticsearch.search.builder.SearchSourceBuilder.searchSource;
-import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
-import static org.hamcrest.Matchers.equalTo;
-
-public class SimpleIndicesBoostSearchIT extends ESIntegTestCase {
- public void testIndicesBoost() throws Exception {
- assertHitCount(client().prepareSearch().setQuery(termQuery("test", "value")).get(), 0);
-
- try {
- client().prepareSearch("test").setQuery(termQuery("test", "value")).execute().actionGet();
- fail("should fail");
- } catch (Exception e) {
- // ignore, no indices
- }
-
- createIndex("test1", "test2");
- ensureGreen();
- client().index(indexRequest("test1").type("type1").id("1")
- .source(jsonBuilder().startObject().field("test", "value check").endObject())).actionGet();
- client().index(indexRequest("test2").type("type1").id("1")
- .source(jsonBuilder().startObject().field("test", "value beck").endObject())).actionGet();
- refresh();
-
- float indexBoost = 1.1f;
-
- logger.info("--- QUERY_THEN_FETCH");
-
- logger.info("Query with test1 boosted");
- SearchResponse response = client().search(searchRequest()
- .searchType(SearchType.QUERY_THEN_FETCH)
- .source(searchSource().explain(true).indexBoost("test1", indexBoost).query(termQuery("test", "value")))
- ).actionGet();
-
- assertThat(response.getHits().totalHits(), equalTo(2L));
- logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).index(), response.getHits().getAt(0).explanation());
- logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).index(), response.getHits().getAt(1).explanation());
- assertThat(response.getHits().getAt(0).index(), equalTo("test1"));
- assertThat(response.getHits().getAt(1).index(), equalTo("test2"));
-
- logger.info("Query with test2 boosted");
- response = client().search(searchRequest()
- .searchType(SearchType.QUERY_THEN_FETCH)
- .source(searchSource().explain(true).indexBoost("test2", indexBoost).query(termQuery("test", "value")))
- ).actionGet();
-
- assertThat(response.getHits().totalHits(), equalTo(2L));
- logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).index(), response.getHits().getAt(0).explanation());
- logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).index(), response.getHits().getAt(1).explanation());
- assertThat(response.getHits().getAt(0).index(), equalTo("test2"));
- assertThat(response.getHits().getAt(1).index(), equalTo("test1"));
-
- logger.info("--- DFS_QUERY_THEN_FETCH");
-
- logger.info("Query with test1 boosted");
- response = client().search(searchRequest()
- .searchType(SearchType.DFS_QUERY_THEN_FETCH)
- .source(searchSource().explain(true).indexBoost("test1", indexBoost).query(termQuery("test", "value")))
- ).actionGet();
-
- assertThat(response.getHits().totalHits(), equalTo(2L));
- logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).index(), response.getHits().getAt(0).explanation());
- logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).index(), response.getHits().getAt(1).explanation());
- assertThat(response.getHits().getAt(0).index(), equalTo("test1"));
- assertThat(response.getHits().getAt(1).index(), equalTo("test2"));
-
- logger.info("Query with test2 boosted");
- response = client().search(searchRequest()
- .searchType(SearchType.DFS_QUERY_THEN_FETCH)
- .source(searchSource().explain(true).indexBoost("test2", indexBoost).query(termQuery("test", "value")))
- ).actionGet();
-
- assertThat(response.getHits().totalHits(), equalTo(2L));
- logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).index(), response.getHits().getAt(0).explanation());
- logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).index(), response.getHits().getAt(1).explanation());
- assertThat(response.getHits().getAt(0).index(), equalTo("test2"));
- assertThat(response.getHits().getAt(1).index(), equalTo("test1"));
- }
-}
diff --git a/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java b/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java
index 735c84a331..be7e69ee76 100644
--- a/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java
+++ b/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java
@@ -81,6 +81,7 @@ public class ShardSearchTransportRequestTests extends AbstractSearchTestCase {
assertEquals(deserializedRequest.cacheKey(), shardSearchTransportRequest.cacheKey());
assertNotSame(deserializedRequest, shardSearchTransportRequest);
assertEquals(deserializedRequest.filteringAliases(), shardSearchTransportRequest.filteringAliases());
+ assertEquals(deserializedRequest.indexBoost(), shardSearchTransportRequest.indexBoost(), 0.0f);
}
}
}
@@ -96,7 +97,7 @@ public class ShardSearchTransportRequestTests extends AbstractSearchTestCase {
filteringAliases = new AliasFilter(null, Strings.EMPTY_ARRAY);
}
return new ShardSearchTransportRequest(searchRequest, shardId,
- randomIntBetween(1, 100), filteringAliases, Math.abs(randomLong()));
+ randomIntBetween(1, 100), filteringAliases, randomBoolean() ? 1.0f : randomFloat(), Math.abs(randomLong()));
}
public void testFilteringAliases() throws Exception {
@@ -212,4 +213,24 @@ public class ShardSearchTransportRequestTests extends AbstractSearchTestCase {
}
}
+ // BWC test for changes from #21393
+ public void testSerialize50RequestForIndexBoost() throws IOException {
+ BytesArray requestBytes = new BytesArray(Base64.getDecoder()
+ // this is a base64 encoded request generated with the same input
+ .decode("AAZpbmRleDEWTjEyM2trbHFUT21XZDY1Z2VDYlo5ZwABBAABAAIA/wD/////DwABBmluZGV4MUAAAAAAAAAAAP////8PAAAAAAAAAgAAAA" +
+ "AAAPa/q8mOKwIAJg=="));
+
+ try (StreamInput in = new NamedWriteableAwareStreamInput(requestBytes.streamInput(), namedWriteableRegistry)) {
+ in.setVersion(Version.V_5_0_0);
+ ShardSearchTransportRequest readRequest = new ShardSearchTransportRequest();
+ readRequest.readFrom(in);
+ assertEquals(0, in.available());
+ assertEquals(2.0f, readRequest.indexBoost(), 0);
+
+ BytesStreamOutput output = new BytesStreamOutput();
+ output.setVersion(Version.V_5_0_0);
+ readRequest.writeTo(output);
+ assertEquals(output.bytes().toBytesRef(), requestBytes.toBytesRef());
+ }
+ }
}