Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java elasticsearch中不推荐使用过滤API_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java elasticsearch中不推荐使用过滤API

Java elasticsearch中不推荐使用过滤API,java,elasticsearch,Java,elasticsearch,我正在使用java API来实现以下输入,但在java API/Elastic 1.4中,FilterBuilders.filtered被弃用 我的目标是实现类似MySQL中WHERE的条件 WHERE id=1 and city="newyork" 在输出中,我需要点击列表,不需要单独的存储桶。我是elasticsearch和API的新手 如何实现过滤(已弃用)之前所做的工作?弹性1.4中的JAVA API也支持过滤 查询DSL { "query": { "filtered"

我正在使用java API来实现以下输入,但在java API/Elastic 1.4中,FilterBuilders.filtered被弃用

我的目标是实现类似MySQL中WHERE的条件

WHERE id=1 and city="newyork" 
在输出中,我需要点击列表,不需要单独的存储桶。我是elasticsearch和API的新手


如何实现过滤(已弃用)之前所做的工作?

弹性1.4中的JAVA API也支持过滤

查询DSL

{
 "query": {
     "filtered": {
        "filter": {
            "and": {
               "filters": [
                  {
                      "term": {
                         "id": 5
                      }
                  },
                  {
                      "term": {
                         "city": "newyork"
                      }
                  }
               ]
            }
        }
     }
 }
}
JAVA API

FilterBuilders.andFilter(
    FilterBuilders.termFilter("id", 5),
    FilterBuilders.termFilter("city", "newyork")
    );

虽然为时已晚,但它可能会帮助其他人。
过滤的
查询被Elasticsearch 2.0版的
bool
查询所取代。看

在Java中,您可以有如下内容:-

FilterBuilders.boolFilter()
                .must(FilterBuilders.queryFilter(QueryBuilders.matchAllQuery()))
                .filter(FilterBuilders.boolFilter()
                        .must(FilterBuilders.termFilter("id", 5))
                        .must(FilterBuilders.termFilter("city", "newyourk"))
                );

是的,它是受支持的,但它显示了针对已筛选的已弃用/待弃用警告。我的目标是构建API。输入将是键值对,我将循环通过jsonNode并逐个添加过滤器。这就是为什么我需要“过滤”API。它向我显示了不推荐的警告你能在你的问题中添加警告信息吗?在elasticsearch 1+版本中,顶级过滤器被弃用并重命名为post_过滤器。突破性更改:它的常见java弃用消息在“过滤”字上加上删除,就像我们看到的任何java代码一样。它要求我添加忽略警告标志。在上面的评论中,我编辑了我想要达到的目标,并制作了一个警告截图。
FilterBuilders.boolFilter()
                .must(FilterBuilders.queryFilter(QueryBuilders.matchAllQuery()))
                .filter(FilterBuilders.boolFilter()
                        .must(FilterBuilders.termFilter("id", 5))
                        .must(FilterBuilders.termFilter("city", "newyourk"))
                );