Olá, Estive pesquisando em como fazer uma pesquisa com like, porém não obtive sucesso. As pesquisas com prefix e wildcard não retornam os dados, por exemplo: Campo nome de um documento com o valor "MIS", ao usar prefix "MI" não retorna, também com wildcard "M*". Ao pesquisar encontrei um analyzer de autocomplete, onde o min_gram é 1:
{
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}
}
}
Maaping:
{
"lancamentos": {
"properties": {
"nome": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"analyzed": {
"type": "text",
"analyzer": "autocomplete"
}
}
}
}
}
}
Porém retorna dados que não estou procurando, por exemplo: Ao pesquisar passando "2017", retorna os documentos "2016.01", "2016.02". Ao checar os tokens do analyzer, verifiquei que é gerado um token para cada combinação, teria como pesquisar somente com a maior?
Por exemplo: /_analyze?analyzer=autocomplete&text=2017
{
"tokens": [
{
"token": "2",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "20",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "201",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "2017",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
}
]
}
Teriam alguma sugestão de se resolver isso?
Obrigado!