🚀 Производительность
которую вы ищете
Производительность движет развитием Manticore Search. Мы стремимся достичь низкого времени отклика, что критически важно для анализа больших наборов данных. Пропускная способность также является ключевым фактором, позволяя Manticore обрабатывать большое количество запросов в секунду. Manticore Search — самый быстрый открытый поисковый движок для больших данных и векторного поиска.
2.83x
быстрее для больших данных
чем Elasticsearch в бенчмарке огромного набора данных (1,7 миллиарда документов)
10.09x
быстрее для анализа журналов
чем Elasticsearch в бенчмарке аналитики журналов (10 млн записей журналов Nginx)
7.28x
быстрее в большом бенчмарке Hackernews (данные среднего размера)
чем Elasticsearch в бенчмарке 100 млн комментариев Hackernews
16.7x
быстрее в небольшом бенчмарке Hackernews (маленькие данные)
чем Elasticsearch в бенчмарке 1 млн комментариев Hackernews
Экономичный поисковый движок
Manticore Search — самая удобная, доступная и экономичная база данных для поиска. Мы превосходим в эффективности даже на небольших VM/контейнерных конфигурациях с минимальными ресурсами, такими как 1 ядро и 1 ГБ памяти, при этом по‑прежнему обеспечивая впечатляющую скорость . Manticore Search разработан для обработки широкого спектра сценариев использования и предлагает мощную производительность при экономии ресурсов для операций любого масштаба. Ознакомьтесь с нашими бенчмарками здесь , чтобы увидеть, как Manticore превосходит другие решения в различных сценариях.
Векторный поиск
Откройте мощные возможности семантического и векторного поиска с Manticore Search. Узнайте больше, изучив наши статьи о Vector Search in Manticore и Integrating Vector Search into GitHub .

Альтернатива Elasticsearch
Manticore Search — мощная альтернатива Elasticsearch. Интегрируйте её с Logstash and Beats , чтобы увидеть улучшение производительности до 29‑кратного ускорения по сравнению с Elasticsearch при обработке набора данных из 10 млн журналов Nginx. Для анализа журналов Manticore также бесшовно работает с Kibana, обеспечивая лучшую производительность. Узнайте больше в нашем сравнении: Manticore Search vs. Elasticsearch for Log Analysis . Исследуйте, как Manticore повышает скорость поиска в различных сценариев использования .
Профессиональные услуги
Хотя Manticore является 100 % открытым исходным кодом, мы готовы помочь вам извлечь из него максимум!
✓ Консалтинг: Сэкономьте время и ресурсы вашей команды, ускоряя разработку
✓ Тонкая настройка: Обеспечьте работу вашего экземпляра на пиковой производительности
✓ Разработка функций: Получите индивидуальные функции, адаптированные к потребностям вашего бизнеса
Узнайте больше о полном спектре наших услуг .
Истинный открытый исходный код
Мы любим открытый исходный код. Manticore Search и другие публично доступные продукты Manticore полностью бесплатны и опубликованы под лицензиями открытого кода, одобренными OSI . Смело вносите вклад на GitHub .
Прост в использовании
Посмотрите, насколько просто использовать Manticore Search с популярными языками программирования.
Настройте и выполните поиск в несколько строк кода менее 1 минуты.
curl localhost:9308/_bulk -H "Content-Type: application/x-ndjson" -d '
{ "index" : { "_index" : "tbl" } }
{ "title" : "Crossbody Bag", "price": 19.85}
{ "index" : { "_index" : "tbl" } }
{ "title" : "microfiber sheet", "price": 19.99}
'
# Search with highlighting
curl localhost:9308/search -d '
{
"index": "tbl",
"query": {
"match": {
"*": "bag"
}
},
"highlight": {
"fields": ["title"]
}
}'
create table products(title text, price float) morphology='stem_en';
insert into products(title,price) values ('Crossbody Bag with Tassel', 19.85), ('microfiber sheet set', 19.99), ('Pet Hair Remover Glove', 7.99);
select id, highlight(), price from products where match('remove hair');
curl "localhost:9308/sql?mode=raw" -d "INSERT INTO mytable (title, price) VALUES ('Crossbody Bag', 19.85), ('microfiber sheet', 19.99)"
curl localhost:9308/sql -d "SELECT *, HIGHLIGHT() FROM mytable WHERE MATCH('bag')"
use Manticoresearch\{Index, Client};
$client = new Client(['host'=>'127.0.0.1','port'=>9308]);
$table = $client->index('products');
$table->addDocument(['title' => 'Crossbody Bag', 'price' => 19.85]);
$table->addDocument(['title' => 'microfiber sheet', 'price' => 19.99]);
# Search with highlighting
$result = $table->search('bag')->highlight(['title'])->get();
var Manticoresearch = require('manticoresearch');
var client= new Manticoresearch.ApiClient()
client.basePath="http://127.0.0.1:9308";
indexApi = new Manticoresearch.IndexApi(client);
searchApi = new Manticoresearch.SearchApi(client);
res = await indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}});
res = await indexApi.insert({"index": "products", "doc" : {"title" : "microfiber sheet set", "price" : 19.99}});
res = await searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight": {"fieldnames": ["title"]}});
import {Configuration, IndexApi, SearchApi, UtilsApi} from "manticoresearch-ts";
const config = new Configuration({
basePath: 'http://localhost:9308',
})
const indexApi = new IndexApi(config);
const searchApi = new SearchApi(config);
await indexApi.insert({index : 'products', id : 1, doc : {title : 'Crossbody Bag with Tassel'}});
await indexApi.insert({index : 'products', id : 2, doc : {title : 'Pet Hair Remover Glove'}});
const res = await searchApi.search({
index: 'products',
query: { query_string: {'bag'} },
});
import manticoresearch
config = manticoresearch.Configuration(
host = "http://127.0.0.1:9308"
)
client = manticoresearch.ApiClient(config)
indexApi = manticoresearch.IndexApi(client)
searchApi = manticoresearch.SearchApi(client)
indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}})
indexApi.insert({"index": "products", "doc" : {"title" : "Pet Hair Remover Glove", "price" : 7.99}})
searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight":{"fieldnames":["title"]}})
import manticoresearch
config = manticoresearch.Configuration(
host = "http://127.0.0.1:9308"
)
with manticoresearch.ApiClient(configuration) as client:
indexApi = manticoresearch.IndexApi(client)
searchApi = manticoresearch.SearchApi(client)
await indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}})
await indexApi.insert({"index": "products", "doc" : {"title" : "Pet Hair Remover Glove", "price" : 7.99}})
await searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight":{"fieldnames":["title"]}})
import (
"context"
manticoreclient "github.com/manticoresoftware/manticoresearch-go"
)
configuration := manticoreclient.NewConfiguration()
configuration.Servers[0].URL = "http://localhost:9308"
apiClient := manticoreclient.NewAPIClient(configuration)
tableName := "products"
indexDoc := map[string]interface{} {"title": "Crossbody Bag with Tassel"}
indexReq := manticoreclient.NewInsertDocumentRequest(tableName, indexDoc)
indexReq.SetId(1)
apiClient.IndexAPI.Insert(context.Background()).InsertDocumentRequest(*indexReq).Execute();
indexDoc = map[string]interface{} {"title": "Pet Hair Remover Glove"}
indexReq = manticoreclient.NewInsertDocumentRequest(tableName, indexDoc)
indexReq.SetId(2)
apiClient.IndexAPI.Insert(context.Background()).InsertDocumentRequest(*indexReq).Execute()
searchRequest := manticoreclient.NewSearchRequest(tableName)
query := map[string]interface{} {"query_string": "bag"}
searchRequest.SetQuery(query)
res, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()
import com.manticoresearch.client.*;
import com.manticoresearch.client.model.*;
import com.manticoresearch.client.api.*;
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("http://127.0.0.1:9308");
IndexApi indexApi = new IndexApi(client);
SearchApi searchApi = new SearchApi(client);
// Insert document 1
InsertDocumentRequest newdoc = new InsertDocumentRequest();
HashMap<String,Object> doc = new HashMap<String,Object>(){{
put("title", "Crossbody Bag with Tassel");
put("price", 19.85);
}};
newdoc.index("products").setDoc(doc);
sqlresult = indexApi.insert(newdoc);
// Insert document 2
newdoc = new InsertDocumentRequest();
doc = new HashMap<String,Object>(){{
put("title","microfiber sheet set");
put("price", 19.99);
}};
newdoc.index("products").setDoc(doc);
sqlresult = indexApi.insert(newdoc);
// Search
query = new HashMap<String,Object>();
query.put("query_string", "@title bag");
searchRequest = new SearchRequest();
searchRequest.setIndex("products");
searchRequest.setQuery(query);
Highlight highlight = new Highlight();
highlight.setFieldnames( Arrays.asList("title") );
searchRequest.setHighlight(highlight);
searchResponse = searchApi.search(searchRequest);
use manticoresearch::{
apis::{
{configuration::Configuration,IndexApi,IndexApiClient,SearchApi,SearchApiClient}
},
models::{InsertDocumentRequest,SearchRequest,SearchQuery,Highlight}
};
let api_config = Arc::new(Configuration::new());
let index_api = IndexApiClient::new(api_config.clone());
let search_api = SearchApiClient::new(api_config.clone());
// Create documents
let doc = serde_json::json!({"title": "Crossbody Bag with Tassel", "price": 19.85});
let insert_request = InsertDocumentRequest {
table: "products",
doc: doc,
..Default::default()
};
let _ = index_api.insert(insert_request).await;
// Prepare search request
let query = SearchQuery {
query_string: Some(serde_json::json!("Star").into()),
..Default::default()
};
let highlight = Highlight {
fields: Some(serde_json::json!(["title"]).into()),
..Default::default()
};
let mut options = HashMap::new();
options.insert("cutoff".to_string(), serde_json::json!(5));
options.insert("ranker".to_string(), serde_json::json!("bm25"));
let search_request = SearchRequest {
table: "movies".to_string(),
query: Some(Box::new(query)),
highlight: Some(Box::new(highlight)),
options: Some(serde_json::json!(options)),
..Default::default()
};
// Perform search
let search_response = search_api.search(search_request).await;
Что говорят люди о Manticore Search
Не просто верьте нам на слово, послушайте, что говорят наши замечательные пользователи!











