A simple search engine for books.
- Java v8
- Spring v5
- Spring Boot v2.2.1
- Angular v8.2.2
- Gradle v5.6.4
- Docker v19.03.4
- docker-compose v1.22.0
- Elsticsearch & Kibana v7.4.2
- Git v2.17.1
- Python v3.6.8
git clone https://github.com/bilalelhoudaigui/books-finder.git
cd books-finder
docker-compose up
The version can be changed in the .env
file.
To build the app, run:
gradlew assemble
The command above will build a standalone jar
that you can run by typing:
java -jar backend/build/libs/backend-0.1.jar
Or you can simply do both at the same time:
./gradlew assemble && java -jar backend/build/libs/backend-0.1.jar
- CSV file is located in
data
directory. - A python script is used to load the data into ES
Python version used is 3.6.8, if you have both puthon 2.x and 3.x on your OS, use
python3
instead ofpython
(e.g.python3 -m venv venv
)
Create a virtualenv:
cd scripts
python -m venv books-venv
If you're on Ubuntu, you may need to install python3-env, if it's not already installed (sudo apt-get install python3-venv
)
Then Activate it:
source venv/bin/activate
Or on Windows cmd:
py -3 -m venv venv
venv\Scripts\activate.bat
Install dependencies:
pip install -r requirements.txt
Finally run the script by typing:
python load_csv.py
- Thanks to @gurtjun for the concise article on how to intergrate Angular in Spring Boot using Gradle.
- The dataset goodreadsbooks is downloaded from kaggle, thanks to Soumik
- Download Logstash zip and verify the config file ===> it worked using Logstash outside docker-compose!
- Then verify docker compose ===> pfff it didn't, got: Logstash giving Elasticsearch Unreachable error
- Test docker elk AIO ===> More complicated see the first answer of the error above.
- Create bash/python script which convert the csv to a bulk file ===> DONE!
- add
how to
to the README
- add
- Try ingesting data using logstash ? (See FIX ERROR above)
- Check out this bigger dataset: goodbooks-10k
-
TODO: Add
api/v1/book-suggestion
endpoint. -
TODO: Add Swagger.
-
BUG: Fix null values when calling
api/v1/book
. -
IDEA: Add neo4j and sql bd.
-
IDEA: Add user profile (use Spring Security).
- ...
- CRUD fav book of a user