Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rohitsthaa/274242bdd36a26d0c51f8b4c727b2eac to your computer and use it in GitHub Desktop.
Save rohitsthaa/274242bdd36a26d0c51f8b4c727b2eac to your computer and use it in GitHub Desktop.
Simple ElasticSearch autocomplete example configuration. The 'autocomplete' functionality is accomplished by lowercasing, character folding and n-gram tokenization of a specific indexed field (in this case "city").
# Delete the possibly existing autocomplete test index
curl -X DELETE localhost:9200/autocomplete_test
# Put the config of the autocomplete index
curl -X PUT localhost:9200/autocomplete_test -d '
{
"settings" : {
"index" : {
"analysis" : {
"analyzer" : {
"autocomplete_analyzer" : {
"type" : "custom",
"tokenizer" : "lowercase",
"filter" : ["asciifolding", "title_ngram"]
}
},
"filter" : {
"title_ngram" : {
"type" : "nGram",
"min_gram" : 3,
"max_gram" : 5
}
}
}
}
},
"mappings": {
"city": {
"properties": {
"city": {
"type": "string",
"analyzer": "autocomplete_analyzer",
"boost": 10
}
}
}
}
}
'
# Show how query input is analyzed
curl "http://localhost:9200/autocomplete_test/_analyze?text=Ouderkerk+aan+de+Amstel&analyzer=autocomplete_analyzer&pretty=True"
# Post some sample documents
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Amsterdam" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Amstelveen" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Ouderkerk aan de Amstel" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Alphen aan den Rijn" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Den Haag" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Rotterdam" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Groningen" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Castelré" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Etten-Leur" }'
curl -X POST "http://localhost:9200/autocomplete_test/city" -d '{ "city" : "Babyloniënbroek" }'
# Make sure everything is indexed
curl -X POST "http://localhost:9200/autocomplete_test/_refresh"
# Perform some searches
curl "http://localhost:9200/autocomplete_test/_search?q=city:Ams&pretty=True"
curl "http://localhost:9200/autocomplete_test/_search?q=city:aan+de&pretty=True"
curl "http://localhost:9200/autocomplete_test/_search?q=city:etten&pretty=True"
curl "http://localhost:9200/autocomplete_test/_search?q=city:lre&pretty=True"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment