|
@@ -9,6 +9,7 @@
|
|
|
|
|
|
package org.elasticsearch.index.query;
|
|
|
|
|
|
+import org.apache.lucene.analysis.Analyzer;
|
|
|
import org.apache.lucene.analysis.TokenStream;
|
|
|
import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
|
|
|
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
|
|
@@ -41,6 +42,7 @@ import org.elasticsearch.xcontent.json.JsonXContent;
|
|
|
import org.junit.Before;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.io.StringReader;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.EnumSet;
|
|
@@ -393,6 +395,19 @@ public class MoreLikeThisQueryBuilderTests extends AbstractQueryTestCase<MoreLik
|
|
|
assertEquals(expectedItem, newItem);
|
|
|
}
|
|
|
|
|
|
+ public void testNonExistingAnalyzer() throws IOException {
|
|
|
+ MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = moreLikeThisQuery(
|
|
|
+ new String[] { "name.first", "name.last" },
|
|
|
+ new String[] { "something" },
|
|
|
+ null
|
|
|
+ );
|
|
|
+ moreLikeThisQueryBuilder.analyzer("thisDoesntExist");
|
|
|
+ SearchExecutionContext searchExecutionContext = createSearchExecutionContext();
|
|
|
+ Query query = moreLikeThisQueryBuilder.toQuery(searchExecutionContext);
|
|
|
+ Analyzer analyzer = ((MoreLikeThisQuery) query).getAnalyzer();
|
|
|
+ assertThrows(IllegalArgumentException.class, () -> analyzer.tokenStream("thisDoesntExist", new StringReader("something")));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Check that this query is generally not cacheable, except when we fetch 0 items
|
|
|
*/
|