我使用java API来实现以下输入,但在JAVA API / Elastic 1.4中不推荐使用FilterBuilders.filtered
filtered: {
filters: {
term: {
"id": 5
}
},
filters{
{
term: {
"city": "newyork"
}
}
}
我的目标是想要实现类似于MySQL中的WHERE条件
WHERE id=1 and city="newyork"
在输出中,我想要点击列表而不想要单独的存储桶。我是elasticsearch和API的新手。
如何实现以前过滤(已弃用)的功能?
答案 0 :(得分:1)
过滤器。 Please check JAVA API query DSL Document
查询DSL
{
"query": {
"filtered": {
"filter": {
"and": {
"filters": [
{
"term": {
"id": 5
}
},
{
"term": {
"city": "newyork"
}
}
]
}
}
}
}
}
JAVA API
FilterBuilders.andFilter(
FilterBuilders.termFilter("id", 5),
FilterBuilders.termFilter("city", "newyork")
);
答案 1 :(得分:1)
现在为时已晚,但也许可以帮助别人。
filtered
查询将替换为Elasticsearch 2.0版中的bool
查询。见Elasticsearch reference
在Java中,您可以使用以下内容: -
FilterBuilders.boolFilter()
.must(FilterBuilders.queryFilter(QueryBuilders.matchAllQuery()))
.filter(FilterBuilders.boolFilter()
.must(FilterBuilders.termFilter("id", 5))
.must(FilterBuilders.termFilter("city", "newyourk"))
);