0
我有一个问题... 我想要使用exists
筛选结合聚合在我的java查询来获得结果,如果该字段有任何值。它是一个嵌套数组,所以我想要获得数组中具有任何值的元素。 在我的Java代码,我有这样的:elasticsearch存在过滤器java
ExistsFilterBuilder filter=FilterBuilders.existsFilter("guides");
QueryBuilder qb = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),filter);
TermsBuilder tbBrand = AggregationBuilders.terms("brand-ag").field("brand.name.name.raw").order(Terms.Order.term(true)).size(0);
SearchResponse sr = esClient.prepareSearch("cellphones").setTypes("cellphone").setQuery(qb)
.addAggregation(tbBrand).execute().actionGet();
我的对象类有场 “指南” 作为一个嵌套的对象:
@Field(type = FieldType.Nested)
private List<EquipoVideoTutorialDTO> guides;
品牌聚集的对象:
@Field(type = FieldType.Object)
private CatalogoDTO brand;
这将返回一个空数组,但我知道我至少有1个项目...
此q uery结果在此:
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"exists" : {
"field" : "guides"
}
}
}
}
发布的代码,我想要的是: 获取要从该元件在“导游”属性一些值的索引所有的“品牌”名称(聚集)。
我错过了什么吗?
编辑
我想补充一个例子元素与导游
{
"idEquipo": 3675,
"tipoTerminal": {
"id": 1,
"nombre": "TELEFONO"
},
"brand": {
"id": 34,
"nombre": "Apple"
},
"sistemaOperativo": {},
"versionSO": null,
"idUnico": "3521",
"nombreComercial": null,
"modelo": "iPhone 5s",
"descripcion": "El iPhone siempre ha sido un dispositivo de vanguardia, y el iPhone 5s es exactamente eso. con una arquitectura móvil de 64 bits sin precedentes, un sensor identificador de huellas digitales innovador, y un flash doble LED, es un Smartphone que está adelantado a su tiempo. Todas estas funcionalidades están al servicio de las personas, y no al revés: son la prueba de que la innovación, cuidadosamente pensada, supera la tecnología desenfrenada. Esto se llama progreso. Y es algo hermoso.",
"capacidadesDiferentes": [
{
"value": "Visual"
},
{
"value": "Motriz"
},
{
"value": "Auditiva - Habla"
}
],
"destacado": null,
"precioMasBajo": null,
"fechaCreacion": "2013-10-11",
"fechaUltimaModificacion": "2014-08-13",
"coberturaRoamingInternacional": [],
"videos": [],
"tutoriales": [],
"guides": [
{
"titulo": "Internet",
"subtitulo": null,
"descripcion": "Esta guía te ayudará a configurar tu equipo para que puedas navegar en Internet.",
"pdf": null,
"prioridad": 1
}
],
"tecnologias": [
{
"idTecnologia": 600,
"tecnologia": "3G",
"frecuencias": [
{
"frecuencia": "900"
},
{
"frecuencia": "850"
},
{
"frecuencia": "1900"
},
{
"frecuencia": "2100"
}
]
},
{
"idTecnologia": 100,
"tecnologia": "GSM",
"frecuencias": [
{
"frecuencia": "850"
},
{
"frecuencia": "900"
},
{
"frecuencia": "1800"
},
{
"frecuencia": "1900"
}
]
},
{
"idTecnologia": 800,
"tecnologia": "4GLTE",
"frecuencias": [
{
"frecuencia": "700"
},
{
"frecuencia": "1700"
},
{
"frecuencia": "2100"
},
{
"frecuencia": "850"
}
]
}
],
"versiones": [],
"categorias": [],
"version": null,
"estatus": "P",
"buckets": {}
}
你可以显示应该返回结果的示例文档吗? – Val
我当然可以,我只是编辑后... ty – juanmeza