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