como combinar um valor de matriz por sua chave em um par de valores-chave elasticsearch array?
Eu tenho uma matriz dekey value
pares. É possível exatamente o valor de correspondência dekey
e depois verifique sevalue
valor do intervalo?
Exemplo: no documento abaixooracle_props
é uma matriz com nome, pares de valores. Eu preciso verificar se tem"oracle_cursors"
chave e verifique se seu valor é menor que 1000.
GET /eg/message/_percolate
{
"doc": {
"client": {
"name": "Athena",
"version": 1,
"db": {
"@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",
"oracle_props": [
{
"@name": "open_cursors",
"@value": 4000
},
{
"@name": "USER_ROLE_PRIVS_COUNT",
"@value": 1
},
{
"@name": "CREATE_PERMISSION",
"@value": "Y"
}
]
}
}
}
}
Abaixo está o meu coador.
Também preciso verificar o seguinte para que ele retorne3
como resultado
1 e 2 são e operações e qualquer um de 3 ou 4 satisfaz isso deve resultar3
. Preciso de ajuda com o ponto 4, abaixo está minha consulta. Sugira também se existe uma maneira melhor.
PUT /eg/.percolator/3
{
"query": {
"filtered": {
"filter": {
"or": [
{
"missing": {
"field": "client.db.oracle_props.@name"
}
}
]
},
"query": {
"bool": {
"must": [
{
"match": {
"client.name": "Athena"
}
},
{
"match": {
"client.db.@type": "Oracle"
}
}
]
}
}
}
}
}
Atualizar
Posso ter algo como abaixo
{
"match": {
"client.db.oracle_props[name='open_cursors'].value": 4000
}
}
Mais tentativas
eu seguiconsulta aninhada elasticsearch e alterou o mapeamento paranestedtype re-indexando. Alguém pode encontrar problema por que estou recebendonested: NullPointerException;
?
PUT /eg/.percolator/3
{
"nested" : {
"path" : "client.db.oracle_props",
"score_mode" : "avg",
"query" : {
"bool" : {
"must" : [
{
"match" : {"client.db.oracle_props.@name" : "open_cursors"}
},
{
"range" : {"client.db.oracle_props.@value" : {"lt" : 4000}}
}
]
}
}
}
}
mudança de mapeamento
...
"properties": {
"@type": {
"type": "string"
},
"oracle_props": {
"type" : "nested",
"properties": {
"@name": {
"type": "string"
},
"@value": {
"type": "long"
}
}
}
}
...