java - Elasticsearch java 顶级查询

标签 java json elasticsearch

我正在尝试使用 java api 对以下 json 运行搜索

{
  "query": {
    "has_child": {
      "query" : {
        "filtered": {
          "query": { "match_all": {}},
          "filter" : {
            "and": {"filters":[
              {"term": {"term": "value"}}
            ]}
          }
        }
      },
      "child_type": "child"
    }
  }
}

这是我的java代码,

        QueryBuilders.hasChildQuery("child", QueryBuilders
                           .filteredQuery(QueryBuilders.matchAllQuery(),
                                         FilterBuilders.andFilter(FilterBuilders.
                                          termFilter("term", "value"))));

但是这只会生成 json

{"has_child":
    {"query":
        {"filtered":
            {"query":{"match_all":{}},
                "filter":{
                "and":
                    {"filters":[
                        {"term":{"term":"value"}}
                        ]
                    }
                }
            }
        },
        "child_type":"child"
    }
}

如您所见,我缺少顶级 { "query": ... } 但我无法找到如何使用 Elasticsearch 的 java api 添加此顶级查询。

最佳答案

根据我对代码的理解

client.prepareSearch("parent-child")
            .setSearchType(SearchType.QUERY_THEN_FETCH)
            .setQuery(query)
            .setFrom(0).setSize(60).setExplain(true)
            .execute()
            .actionGet();

它使用 {"query": ...} 自动包装查询

我的问题是我搜索了错误的索引。

关于java - Elasticsearch java 顶级查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27485837/

相关文章:

java - eclipse 不允许我访问构造函数

java - Args4j 列出包含未处理的空格的参数

ruby-on-rails - 出现错误 - 类型 "json"不存在 - 在 rake db 迁移期间在 Postgresql 中

javascript - Jade 不渲染外部 JSON

php - Elasticsearch多个术语/过滤器

java - JOptionPane 中的文本换行?

java - 如何在java程序要读取的xml文件中放置<符号?

php - 在 PHP 代码中嵌入 HTML

elasticsearch - 使 Elasticsearch 中的所有对象嵌套对象

elasticsearch - 如何在查询时而不是在 Elasticsearch 中的索引时应用同义词