I am using elasticsearch-1.7.1 and java dependency is
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>1.7.1</version>
Problem : I am using in a clause in ES but when I query ES with filtered query it is giving me a null response.
contentQuery = boolQuery().must(QueryBuilders.matchQuery(PROPERTY_BOOK_ID, bookId).operator(Operator.AND))
.must(QueryBuilders.matchQuery("contentType", "enrichments").operator(Operator.AND))
.must(contentQuery);
FilteredQueryBuilder builder =
QueryBuilders.filteredQuery(contentQuery, FilterBuilders.termFilter("spineId","chapter04.html"));
searchResponse = searchClientService.getClient()
.prepareSearch(INDEX_NAME).setTypes(INDEX_TYPE)
.setQuery(builder)
.execute().actionGet();
without a filter, it is working fine. Can anyone please suggest how to apply a filter to the query or let me know if am going anywhere wrong while making the requests.
Query Details :
{
"filtered" : {
"query" : {
"bool" : {
"must" : [ {
"match" : {
"bookId" : {
"query" : "d563739c-8b46-449b-b695-d662cb32087d",
"type" : "boolean",
"operator" : "AND"
}
}
}, {
"match" : {
"contentType" : {
"query" : "enrichments",
"type" : "boolean",
"operator" : "AND"
}
}
}, {
"bool" : {
"must" : {
"match" : {
"content" : {
"query" : "resources*",
"type" : "phrase_prefix"
}
}
}
}
} ]
}
},
"filter" : {
"term" : {
"spineId" : "chapter04.html"
}
}
}
}
I've also tried other filter queries on my index, none of them is working.Below query must return some result but its returning empty result.
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"bool" : {
"must" : {
"term" : {
"spineId" : "chapter03.html"
}
}
}
}
}
}
Mapping :
private XContentBuilder buildMapping() throws Exception {
return jsonBuilder().prettyPrint()
.startObject()
.startObject(indexType)
.startObject("properties")
.startObject(PROPERTY_SPINE_ID).field("type", "string").field("index", "not_analyzed").endObject()
.endObject()
.endObject()
.endObject();
}
XContentBuilder source = jsonBuilder().startObject();
source.field(PROPERTY_BOOK_ID, bookId)
.field(PROPERTY_WIDGET_ID, widgetId)
.field(PROPERTY_CONTENT, widgetDescription)
.field(PROPERTY_CONTENT_TYPE, contentType.getValue())
.field(PROPERTY_META_DATA, widgetJsonString)
.field(PROPERTY_SPINE_ID, spineId)
.endObject();
any help greatly appreciated.
>
– Himanshu Arora Jun 30 '16 at 07:24