I’ve lurked here for a while, but this is my first actual post. I’ve recently started trying Algolia for for search on a new site, and hate anything manual about the upload process. So I whipped up a bare-bones uploader than can be called as part of an automated build.
It lives here: https://github.com/duckpuppy/algolia-hugo
It’s pretty simple - create your config file (or set the appropriate environment variables) and point it at a .json
file. It will DELETE the contents of the index it’s pointed at and upload the new file in it’s place (because I hate the idea of deleted or modified content remaining in the search index). I’ve looked at implementing object IDs in my templates, and if I get that working I will probably update the tool to update instead of delete/upload (with optional wipe functionality for occasional housecleaning).
It’s written in golang, like Hugo. I haven’t put up any releases yet, but go get github.com/duckpuppy/algolia-hugo
should get you a working binary. If anyone has a chance to use it, let me know how it works for you. PRs and feature requests are welcome, but my time to work on this is limited. I will strive to accept PRs as quickly as I can review them, but any feature requests will probably end up being a weekend code fest.
I hope to polish this up and get some actual releases on Github soon, but I want to get some usage feedback.
3 Likes
Thank you for sharing this! I will surely add it to my build script.
Some minor comments: I’m new to hugo and had to figure out I needed to run go build
first, and it may be good for others.
But none the less, great work 
Hopefully the need to go build
will be gone very soon, if it’s there. go get
should have downloaded the source and then ran a go install
, providing you a binary in your $GOPATH/bin
folder.
like I said @duckpuppy, I’m new to this so it may be a result of my lack of knowledge. 
Knock knock 
So I tried to implement this for my website index because the Algolia solution (atomic-algolia) stopped working a while ago magically. I get to the point where I have the binary produced and run the following line:
~/go/src/github.com/duckpuppy/algolia-hugo/algolia-hugo -f public/algolia.json -c .env update
I receive an error:
[23:09:54][patrick@skadi] ~/Projects/Me/samui-samui.de (+1|%0|!6528|0)
❯ ~/go/src/github.com/duckpuppy/algolia-hugo/algolia-hugo -f public/algolia.json -c .env update
• Deleting existing objects
⨯ Failed to delete existing objects error=Cannot perform request [POST] /1/indexes//clear (-1.algolianet.com): Post https://-1.algolianet.com/1/indexes//clear: dial tcp: lookup -1.algolianet.com: no such host
Where do I start to debug?
That looks like the DNS for the server isn’t resolving. Have you tried with another network/computer?
Yes, but they come out of the same network in the end, so that probably won’t help to check resolving issues.
The other thing is: the subdomain is -1.algolia.net (that’s an invalid format) which points me more to an error in a function that retrieves that host we speak of. Maybe Algolia changed something in the way it returns a setup.
I tried renaming .env to .env.yaml to no change and will check deeper later.
https://-1.algolianet.com/1/indexes//clear
looks like he does not read my config.