If the _percolator has been removed then also remove percolator queries.
This commit is contained in:
parent
1983a3676a
commit
a237eead55
|
@ -193,6 +193,7 @@ public class PercolatorQueriesRegistry extends AbstractIndexShardComponent {
|
||||||
public void removed(String type) {
|
public void removed(String type) {
|
||||||
if (PercolatorService.Constants.TYPE_NAME.equals(type)) {
|
if (PercolatorService.Constants.TYPE_NAME.equals(type)) {
|
||||||
disableRealTimePercolator();
|
disableRealTimePercolator();
|
||||||
|
clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1021,6 +1021,52 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
|
||||||
assertThat(response.getMatches(), emptyArray());
|
assertThat(response.getMatches(), emptyArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeletePercolatorType() throws Exception {
|
||||||
|
client().admin().indices().prepareCreate("test1").execute().actionGet();
|
||||||
|
client().admin().indices().prepareCreate("test2").execute().actionGet();
|
||||||
|
ensureGreen();
|
||||||
|
|
||||||
|
client().prepareIndex("test1", "_percolator", "1")
|
||||||
|
.setSource(jsonBuilder().startObject().field("query", matchAllQuery()).endObject())
|
||||||
|
.execute().actionGet();
|
||||||
|
client().prepareIndex("test2", "_percolator", "1")
|
||||||
|
.setSource(jsonBuilder().startObject().field("query", matchAllQuery()).endObject())
|
||||||
|
.execute().actionGet();
|
||||||
|
|
||||||
|
PercolateResponse response = client().preparePercolate()
|
||||||
|
.setIndices("test1", "test2").setDocumentType("type").setOnlyCount(true)
|
||||||
|
.setPercolateDoc(docBuilder().setDoc(jsonBuilder().startObject().field("field1", "b").endObject()))
|
||||||
|
.execute().actionGet();
|
||||||
|
assertThat(response.getCount(), equalTo(2l));
|
||||||
|
|
||||||
|
client().admin().indices().prepareDeleteMapping("test1").setType("_percolator").execute().actionGet();
|
||||||
|
// To verify that the type is really deleted from all the node
|
||||||
|
SearchResponse searchResponse;
|
||||||
|
do {
|
||||||
|
searchResponse = client().prepareSearch("test1").setTypes("_percolator").execute().actionGet();
|
||||||
|
} while (searchResponse.getHits().totalHits() != 0);
|
||||||
|
|
||||||
|
response = client().preparePercolate()
|
||||||
|
.setIndices("test1", "test2").setDocumentType("type").setOnlyCount(true)
|
||||||
|
.setPercolateDoc(docBuilder().setDoc(jsonBuilder().startObject().field("field1", "b").endObject()))
|
||||||
|
.execute().actionGet();
|
||||||
|
assertThat(response.getCount(), equalTo(1l));
|
||||||
|
|
||||||
|
client().admin().indices().prepareDeleteMapping("test2").setType("_percolator").execute().actionGet();
|
||||||
|
// To verify that the type is really deleted from all the node
|
||||||
|
do {
|
||||||
|
searchResponse = client().prepareSearch("test2").setTypes("_percolator").execute().actionGet();
|
||||||
|
} while (searchResponse.getHits().totalHits() != 0);
|
||||||
|
|
||||||
|
// Percolate api should return 0 matches, because all _percolate types have been removed.
|
||||||
|
response = client().preparePercolate()
|
||||||
|
.setIndices("test1", "test2").setDocumentType("type").setOnlyCount(true)
|
||||||
|
.setPercolateDoc(docBuilder().setDoc(jsonBuilder().startObject().field("field1", "b").endObject()))
|
||||||
|
.execute().actionGet();
|
||||||
|
assertThat(response.getCount(), equalTo(0l));
|
||||||
|
}
|
||||||
|
|
||||||
public static String[] convertFromTextArray(PercolateResponse.Match[] matches, String index) {
|
public static String[] convertFromTextArray(PercolateResponse.Match[] matches, String index) {
|
||||||
if (matches.length == 0) {
|
if (matches.length == 0) {
|
||||||
return Strings.EMPTY_ARRAY;
|
return Strings.EMPTY_ARRAY;
|
||||||
|
|
Loading…
Reference in New Issue