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

Альтернатива Elasticsearch
Manticore Search — это мощная альтернатива Elasticsearch. Интегрируйте его с Logstash и Beats , чтобы увидеть улучшения производительности до 29 раз быстрее, чем Elasticsearch при обработке набора данных логов Nginx на 10M. Для анализа логов Manticore также работает без проблем с Kibana, предлагая лучшую производительность. Узнайте больше в нашем сравнении: Manticore Search против Elasticsearch для анализа логов . Узнайте, как 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" : "Сумка через плечо", "price": 19.85}
{ "index" : { "_index" : "tbl" } }
{ "title" : "микрофибровая простыня", "price": 19.99}
'
# Поиск с подсветкой
curl localhost:9308/search -d '
{
"index": "tbl",
"query": {
"match": {
"*": "сумка"
}
},
"highlight": {
"fields": ["title"]
}
}'
create table products(title text, price float) morphology='stem_en';
insert into products(title,price) values ('Сумка через плечо с кисточкой', 19.85), ('комплект микрофибровых простыней', 19.99), ('Перчатка для удаления шерсти домашних животных', 7.99);
select id, highlight(), price from products where match('удалить шерсть');
curl "localhost:9308/sql?mode=raw" -d "INSERT INTO mytable (title, price) VALUES ('Сумка через плечо', 19.85), ('микрофибровая простыня', 19.99)"
curl localhost:9308/sql -d "SELECT *, HIGHLIGHT() FROM mytable WHERE MATCH('сумка')"
use Manticoresearch\{Index, Client};
$client = new Client(['host'=>'127.0.0.1','port'=>9308]);
$table = $client->index('products');
$table->addDocument(['title' => 'Сумка через плечо', 'price' => 19.85]);
$table->addDocument(['title' => 'микрофибровая простыня', 'price' => 19.99]);
# Поиск с подсветкой
$result = $table->search('сумка')->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" : "Сумка через плечо с кисточкой", "price" : 19.85}});
res = await indexApi.insert({"index": "products", "doc" : {"title" : "комплект микрофибровых простыней", "price" : 19.99}});
res = await searchApi.search({"index": "products", "query": {"query_string": "@title сумка"}, "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 : 'Сумка через плечо с кисточкой'}});
await indexApi.insert({index : 'products', id : 2, doc : {title : 'Перчатка для удаления шерсти домашних животных'}});
const res = await searchApi.search({
index: 'products',
query: { query_string: {'сумка'} },
});
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" : "Сумка через плечо с кисточкой", "price" : 19.85}})
indexApi.insert({"index": "products", "doc" : {"title" : "Перчатка для удаления шерсти домашних животных", "price" : 7.99}})
searchApi.search({"index": "products", "query": {"query_string": "@title сумка"}, "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" : "Сумка через плечо с кисточкой", "price" : 19.85}})
await indexApi.insert({"index": "products", "doc" : {"title" : "Перчатка для удаления шерсти домашних животных", "price" : 7.99}})
await searchApi.search({"index": "products", "query": {"query_string": "@title сумка"}, "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": "Сумка через плечо с кисточкой"}
indexReq := manticoreclient.NewInsertDocumentRequest(tableName, indexDoc)
indexReq.SetId(1)
apiClient.IndexAPI.Insert(context.Background()).InsertDocumentRequest(*indexReq).Execute();
indexDoc = map[string]interface{} {"title": "Перчатка для удаления шерсти домашних животных"}
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
Не верьте нам на слово, послушайте, что говорят наши замечательные пользователи!










