According to documentation
must_not The clause (query) must not appear in the matching documents.
I have query like this:
// searching for URI which contains smart and doesn't contain vip.vs.csin.cz
BoolQueryBuilder builder = QueryBuilders.boolQuery();
builder.must(QueryBuilders.termQuery(URI, "smart")));
builder.mustNot(QueryBuilders.termQuery(URI, "vip.vs.csin.cz")));
There're two URIs im my elasticsearch repository
1)
/smart-int-vip.vs.csin.cz:5080/smart/api/runtime/case/SC0000000000558648/record/generate/4327/by/SMOBVA002/as/true?espisRecordForm=ANALOG&accountNumber=2318031033/0800
2)
/smart/api/runtime/case/SC0000000000558648/record/generate/4327/by/SMOBVA002/as/true?espisRecordForm=ANALOG&accountNumber=2318031033/0800
When I execute query via ElasticSearchTemplate
elasticsearchTemplate.getClient().search(searchRequest);
I get back 0 records. When I execute same query without mustNot clause I get back 2 records.
In kibana I can write:
uri: "smart" NOT uri: "vip.vs.csin.cz"
And get 1 record as expected.
I was expecting the same behaviour from Java ElasticSearchClient. How can I filter records which contains "vip.vs.csin.cz" from Java and why It filtered second record even though it doesn't contain anything from mustNot clause I specified ?
Edit here's my mapping
@Document(indexName = "audit-2018", type = "audit")
public class Trace {
@Id
private String id;
@Field(type = FieldType.Text)
private String uri;
// more columns, getter & setters
}