Mahuta (früher bekannt als IPFS-Store) ist eine Bibliothek zum Aggregieren und Konsolidieren von Dateien oder Dokumenten, die von Ihrer Anwendung im IPFS-Netzwerk gespeichert werden. Es bietet eine Lösung zum bequemen Sammeln, Speichern, Indexieren, Zwischenspeichern und Durchsuchen der von Ihrem System verarbeiteten IPFS-Daten.
Service | Master | Entwicklung |
---|---|---|
CI-Status | ||
Testabdeckung | ||
Bintray | ||
Docker | ||
Sonar |
Mit diesen Anweisungen erhalten Sie eine Kopie des Projekts, die zu Entwicklungs- und Testzwecken auf Ihrem lokalen Computer ausgeführt werden kann.
Mahuta besteht aus zwei Komponenten:
Erfahren Sie, wie Sie diese beiden Komponenten ausführen. Führen Sie zunächst IPFS und ElasticSearch aus
< 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();
Weitere Informationen finden Sie unter Mahuta Java API
<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);
}
}
Für weitere Informationen: Mahuta Spring Data
$ docker run -it --name mahuta
-p 8040:8040
-e MAHUTA_IPFS_HOST=ipfs
-e MAHUTA_ELASTICSEARCH_HOST=elasticsearch
gjeanmart/mahuta
Sehen Sie sich die Dokumentation zur Konfiguration der Mahuta HTTP-API mit Docker an.
Um auf die API-Dokumentation zuzugreifen, gehen Sie zu Mahuta HTTP API
article
curl -X POST
http://localhost:8040/mahuta/config/index/article
-H 'Content-Type: application/json'
Erfolgsantwort:
{
"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"]}}'
Erfolgsantwort:
{
"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"}]}'
Erfolgsantwort:
{
"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
}
}