-
Notifications
You must be signed in to change notification settings - Fork 25k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make limit on number of expanded fields configurable #35284
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,8 +30,10 @@ | |
import org.elasticsearch.index.query.QueryStringQueryBuilder; | ||
import org.elasticsearch.search.SearchHit; | ||
import org.elasticsearch.search.SearchHits; | ||
import org.elasticsearch.search.SearchModule; | ||
import org.elasticsearch.test.ESIntegTestCase; | ||
import org.junit.Before; | ||
import org.junit.BeforeClass; | ||
|
||
import java.io.IOException; | ||
import java.util.ArrayList; | ||
|
@@ -51,13 +53,28 @@ | |
|
||
public class QueryStringIT extends ESIntegTestCase { | ||
|
||
private static int CLUSTER_MAX_CLAUSE_COUNT; | ||
|
||
@BeforeClass | ||
public static void createRandomClusterSetting() { | ||
CLUSTER_MAX_CLAUSE_COUNT = randomIntBetween(500, 1500); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we test with small numbers, this seems big for a simple ut. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure, the test was running with the default of 1024 before, so I wanted to stay in that area but there's no need to. Will lower it to the hundreds if that sounds okay. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. +1 |
||
} | ||
|
||
@Before | ||
public void setup() throws Exception { | ||
String indexBody = copyToStringFromClasspath("/org/elasticsearch/search/query/all-query-index.json"); | ||
prepareCreate("test").setSource(indexBody, XContentType.JSON).get(); | ||
ensureGreen("test"); | ||
} | ||
|
||
@Override | ||
protected Settings nodeSettings(int nodeOrdinal) { | ||
return Settings.builder() | ||
.put(super.nodeSettings(nodeOrdinal)) | ||
.put(SearchModule.INDICES_MAX_CLAUSE_COUNT_SETTING.getKey(), CLUSTER_MAX_CLAUSE_COUNT) | ||
.build(); | ||
} | ||
|
||
public void testBasicAllQuery() throws Exception { | ||
List<IndexRequestBuilder> reqs = new ArrayList<>(); | ||
reqs.add(client().prepareIndex("test", "_doc", "1").setSource("f1", "foo bar baz")); | ||
|
@@ -253,15 +270,16 @@ public void testLimitOnExpandedFields() throws Exception { | |
builder.startObject(); | ||
builder.startObject("type1"); | ||
builder.startObject("properties"); | ||
for (int i = 0; i < 1025; i++) { | ||
for (int i = 0; i < CLUSTER_MAX_CLAUSE_COUNT + 1; i++) { | ||
builder.startObject("field" + i).field("type", "text").endObject(); | ||
} | ||
builder.endObject(); // properties | ||
builder.endObject(); // type1 | ||
builder.endObject(); | ||
|
||
assertAcked(prepareCreate("toomanyfields") | ||
.setSettings(Settings.builder().put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 1200)) | ||
.setSettings(Settings.builder().put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), | ||
CLUSTER_MAX_CLAUSE_COUNT + 100)) | ||
.addMapping("type1", builder)); | ||
|
||
client().prepareIndex("toomanyfields", "type1", "1").setSource("field171", "foo bar baz").get(); | ||
|
@@ -276,7 +294,8 @@ public void testLimitOnExpandedFields() throws Exception { | |
client().prepareSearch("toomanyfields").setQuery(qb).get(); | ||
}); | ||
assertThat(ExceptionsHelper.detailedMessage(e), | ||
containsString("field expansion matches too many fields, limit: 1024, got: 1025")); | ||
containsString("field expansion matches too many fields, limit: " + CLUSTER_MAX_CLAUSE_COUNT + ", got: " | ||
+ (CLUSTER_MAX_CLAUSE_COUNT + 1))); | ||
} | ||
|
||
public void testFieldAlias() throws Exception { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you also add a note in the
multi_match
query ?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
np