Sto provando a cercare nel mio database ed essere in grado di usare termini maiuscoli/minuscoli, ma ho notato che mentre gli analizzatori di query
si applicano, non riesco a capire come applicare un analizzatore di lettere minuscole su una ricerca filtrata. Ecco la domanda:Ricerca filtro Elasticsearch in minuscolo
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"term": {
"language": "mandarin" // Returns a doc
}
},
{
"term": {
"language": "Italian" // Does NOT return a doc, but will if lowercased
}
}
]
}
}
}
}
}
Ho un tipo languages
che ho in minuscolo utilizzando:
"analyzer": {
"lower_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
e una mappatura corrispondente:
"mappings": {
"languages": {
"_id": {
"path": "languageID"
},
"properties": {
"languageID": {
"type": "integer"
},
"language": {
"type": "string",
"analyzer": "lower_keyword"
},
"native": {
"type": "string",
"analyzer": "keyword"
},
"meta": {
"type": "nested"
},
"language_suggest": {
"type": "completion"
}
}
}
}
Quindi, se ho voluto tho termine da caratteri minuscoli dovrei cambiare il tokenizzatore a uno minuscolo e reindex tutto? – Maruf
No, è già in minuscolo durante l'indicizzazione a causa del filtro in minuscolo. Il problema è che devi usare un tipo di query che analizzerà anche i filtri a termine. –
Vedresti prestazioni migliori se solo inserendo il valore in minuscolo in modo da poter continuare a utilizzare un filtro termini utilizzando un filtro query? – odyth