Mahuta (anciennement connu sous le nom d'IPFS-Store) est une bibliothèque permettant d'agréger et de consolider des fichiers ou documents stockés par votre application sur le réseau IPFS. Il fournit une solution pour collecter, stocker, indexer, mettre en cache et rechercher les données IPFS gérées par votre système de manière pratique.
Service | Maître | Développement |
---|---|---|
Statut de l'IC | ||
Couverture des tests | ||
Bintray | ||
Docker | ||
Sonar |
Ces instructions vous permettront d'obtenir une copie du projet opérationnel sur votre ordinateur local à des fins de développement et de test.
Mahuta dépend de deux éléments :
Découvrez comment exécuter ces deux composants en premier, exécutez IPFS et ElasticSearch
< repository >
< id >consensys-kauri</ id >
< name >consensys-kauri</ name >
< url >https://consensys.bintray.com/kauri/</ url >
</ repository >
< dependency >
< groupId >net.consensys.mahuta</ groupId >
< artifactId >mahuta-core</ artifactId >
< version >${MAHUTA_VERSION}</ version >
</ dependency >
< dependency >
< groupId >net.consensys.mahuta</ groupId >
< artifactId >mahuta-indexing-elasticsearch</ artifactId >
< version >${MAHUTA_VERSION}</ version >
</ dependency >
Mahuta mahuta = new MahutaFactory()
.configureStorage(IPFSService.connect("localhost", 5001))
.configureIndexer(ElasticSearchService.connect("localhost", 9300, "cluster-name"))
.defaultImplementation();
IndexingResponse response = mahuta.prepareStringIndexing("article", "## This is my first article")
.contentType("text/markdown")
.indexDocId("article-1")
.indexFields(ImmutableMap.of("title", "First Article", "author", "greg"))
.execute();
GetResponse response = mahuta.prepareGet()
.indexName("article")
.indexDocId("article-1")
.loadFile(true)
.execute();
SearchResponse response = mahuta.prepareSearch()
.indexName("article")
.query(Query.newQuery().equals("author", "greg"))
.pageRequest(PageRequest.of(0, 20))
.execute();
Pour plus d'informations, API Java Mahuta
<dependency>
<groupId>net.consensys.mahuta</groupId>
<artifactId>mahuta-springdata</artifactId>
<version>${MAHUTA_VERSION}</version>
</dependency>
@IPFSDocument(index = "article", indexConfiguration = "article_mapping.json", indexContent = true)
public class Article {
@Id
private String id;
@Hash
private String hash;
@Fulltext
private String title;
@Fulltext
private String content;
@Indexfield
private Date createdAt;
@Indexfield
private String createdBy;
}
public class ArticleRepository extends MahutaRepositoryImpl<Article, String> {
public ArticleRepository(Mahuta mahuta) {
super(mahuta);
}
}
Pour plus d'informations, Mahuta Spring Data
$ docker run -it --name mahuta
-p 8040:8040
-e MAHUTA_IPFS_HOST=ipfs
-e MAHUTA_ELASTICSEARCH_HOST=elasticsearch
gjeanmart/mahuta
Consultez la documentation pour configurer Mahuta HTTP-API avec Docker.
Pour accéder à la documentation de l'API, rendez-vous sur Mahuta HTTP API
article
d'index curl -X POST
http://localhost:8040/mahuta/config/index/article
-H 'Content-Type: application/json'
Réponse réussie :
{
"status": "SUCCESS"
}
curl -X POST
'http://localhost:8040/mahuta/index'
-H 'content-type: application/json'
-d '{"content":"# Hello world,n this is my first file stored on **IPFS**","indexName":"article","indexDocId":"hello_world","contentType":"text/markdown","index_fields":{"title":"Hello world","author":"Gregoire Jeanmart","votes":10,"date_created":1518700549,"tags":["general"]}}'
Réponse réussie :
{
"indexName": "article",
"indexDocId": "hello_world",
"contentId": "QmWHR4e1JHMs2h7XtbDsS9r2oQkyuzVr5bHdkEMYiqfeNm",
"contentType": "text/markdown",
"content": null,
"pinned": true,
"indexFields": {
"title": "Hello world",
"author": "Gregoire Jeanmart",
"votes": 10,
"createAt": 1518700549,
"tags": [
"general"
]
},
"status": "SUCCESS"
}
curl -X POST
'http://localhost:8040/mahuta/query/search?index=article'
-H 'content-type: application/json'
-d '{"query":[{"name":"title","operation":"CONTAINS","value":"Hello"},{"name":"author.keyword","operation":"EQUALS","value":"Gregoire Jeanmart"},{"name":"votes","operation":"GT","value":"5"}]}'
Réponse réussie :
{
"status": "SUCCESS",
"page": {
"pageRequest": {
"page": 0,
"size": 20,
"sort": null,
"direction": "ASC"
},
"elements": [
{
"metadata": {
"indexName": "article",
"indexDocId": "hello_world",
"contentId": "Qmd6VkHiLbLPncVQiewQe3SBP8rrG96HTkYkLbMzMe6tP2",
"contentType": "text/markdown",
"content": null,
"pinned": true,
"indexFields": {
"author": "Gregoire Jeanmart",
"votes": 10,
"title": "Hello world",
"createAt": 1518700549,
"tags": [
"general"
]
}
},
"payload": null
}
],
"totalElements": 1,
"totalPages": 1
}
}