Mahuta
Relase 0.3.12
Mahuta (المعروفة سابقًا باسم IPFS-Store) هي مكتبة لتجميع ودمج الملفات أو المستندات المخزنة بواسطة تطبيقك على شبكة IPFS. فهو يوفر حلاً لجمع بيانات IPFS التي يتعامل معها نظامك، وتخزينها وفهرستها وتخزينها مؤقتًا والبحث فيها بطريقة مناسبة.
خدمة | يتقن | تطوير |
---|---|---|
حالة سي آي | ||
تغطية الاختبار | ||
بينتراي | ||
عامل ميناء | ||
سونار |
ستوفر لك هذه التعليمات نسخة من المشروع جاهزة للعمل على جهازك المحلي لأغراض التطوير والاختبار.
تعتمد ماهوتا على عنصرين:
تعرف على كيفية تشغيل هذين المكونين أولاً، قم بتشغيل IPFS و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();
لمزيد من المعلومات، ماهوتا جافا 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);
}
}
لمزيد من المعلومات، بيانات ماهوتا الربيع
$ docker run -it --name mahuta
-p 8040:8040
-e MAHUTA_IPFS_HOST=ipfs
-e MAHUTA_ELASTICSEARCH_HOST=elasticsearch
gjeanmart/mahuta
راجع الوثائق لتكوين Mahuta HTTP-API مع Docker.
للوصول إلى وثائق API، انتقل إلى Mahuta HTTP API
article
الفهرس curl -X POST
http://localhost:8040/mahuta/config/index/article
-H 'Content-Type: application/json'
استجابة النجاح:
{
"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"]}}'
استجابة النجاح:
{
"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"}]}'
استجابة النجاح:
{
"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
}
}