GH GambleHub

Технология ва инфрасохтор → Elasticsearch ва ҷустуҷӯи пурраи матн

Ҷустуҷӯи эластикӣ ва матни пурра

1) Нақши Elasticsearch

Elasticsearch (ES) системаи тақсимшудаи ҷустуҷӯ ва таҳлил дар асоси индексатсияҳои баръакс ва сохторҳои сутун барои агрегатҳо мебошад. Ин медиҳад:
  • Матни пурра: аҳамият (BM25), морфология, номуайян/чопӣ таҳаммулпазир.
  • Ҷанбаҳо ва агрегатҳо: иловаро зуд аз рӯи атрибутҳо.
  • Ҷустуҷӯи гибридӣ: BM25 + вектор k 'NN (семантика).
  • Суръати рушд: дархости DSL, қубурҳо, экосистемаи бой.

Барои IGaming/fintech: ҷустуҷӯи бозиҳо/провайдерҳо, промо ва қоидаҳо, ҷабҳаҳои зуд реаксия (провайдер, ноустуворӣ, RTP, забон), ҷустуҷӯи маҷаллаҳои KYC/AML, таҳлили гузоришҳо ва огоҳиҳо.

2) Модели маълумот ва харитасозӣ

2. 1 Индекс ва намудҳои майдон

'text' for матни пурра.
'keyword' - арзишҳои дақиқ/маҷмӯаҳо/навъҳо.
'date', 'дароз/дукарата', 'мантиқӣ', 'ip', 'geo _ point'.
'nested' - массиви объектҳо бо таносуби дурусти майдон.
'dense _ vector' - намояндагиҳои векторӣ (ҷобаҷогузорӣ).

2. 2 Стратегияи бисёрсоҳавӣ

Майдонро бо якчанд нуқтаи назар нигоҳ доред: 'ном. матн ',' ном. raw '(калимаи калидӣ),' ном. ngram '(барои анҷом додани худкор).

json
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ru_morph",
"fields": {
"raw": { "type": "keyword", "ignore_above": 256 },
"ngram": { "type": "text", "analyzer": "edge_ngram_2_20" }
}
},
"provider": { "type": "keyword" },
"tags":   { "type": "keyword" },
"rtp":   { "type": "float" },
"released_at": { "type": "date" },
"lang":   { "type": "keyword" },
"embedding": { "type": "dense_vector", "dims": 384, "index": true, "similarity": "cosine" }
}
},
"settings": {
"analysis": {
"filter": {
"ru_stop": { "type": "stop", "stopwords": "_russian_" },
"ru_stemmer": { "type": "stemmer", "language": "russian" },
"syn_ru": { "type": "synonym", "lenient": true, "synonyms": [
"slot, slot machine => slot,"
"jackpot, super prize => jackpot"
] }
},
"analyzer": {
"ru_morph": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "ru_stop", "ru_stemmer", "syn_ru"]
},
"edge_ngram_2_20": {
"type": "custom",
"tokenizer": "edge_ngram",
"filter": ["lowercase"],
"char_filter": [],
"tokenizer": "edge_ngram"
}
},
"tokenizer": {
"edge_ngram": { "type": "edge_ngram", "min_gram": 2, "max_gram": 20 }
}
}
}
}

2. 3 Лона барои паҳлӯҳо

Атрибутҳои шакли 'хусусиятҳо: [{ном, арзиши}]' тарроҳӣ 'nested', вагарна паҳлӯҳо мувофиқати бардурӯғ медиҳанд.

3) Аҳамият: BM25, афзоиш ва гибрид

3. 1 Классика (BM25)

Майдонҳоро бо вазнҳо муттаҳид кунед (унвон; 4, барчасбҳо; 2, тавсиф).
Барои назорат кардани гугирдҳои ғалоғула 'minimal _ shoud _ match' -ро истифода баред.

3. 2 Векторҳо (KNN) + BM25 (rerank)

Ҷобаҷогузорӣ (масалан. 384-768) дар 'зиччи _ вектор'.
Аввалан KNN аз рӯи вектор (боло 200-500), баъд аз афзоиши бизнес + (навоварӣ, RTP, литсензияи минтақавӣ) наҷот диҳед.

Намунаи дархости гибридӣ:
json
{
"knn": {
"field": "embedding",
"query_vector": [/... /],
"k": 400, "num_candidates": 2000
},
"query": {
"bool": {
"should": [
{ "multi_match": {
"query": "Egyptian jackpot slots,"
"fields": ["title^4","tags^2","description"],
"type": "best_fields",
"minimum_should_match": "60%"
}}
],
"filter": [
{ "term": { "region": "TR" }},
{ "range": { "rtp": { "gte": 94. 0 }}}
]
}
},
"rescore": {
"window_size": 400,
"query": {
"rescore_query": {
"function_score": {
"query": { "match_all": {} },
"boost_mode": "sum",
"functions": [
{ "gauss": { "released_at": { "scale": "180d", "offset": "30d", "decay": 0. 5 } } },
{ "field_value_factor": { "field": "popularity", "factor": 0. 2, "modifier": "log1p" } }
]
}
}
}
},
"highlight": { "fields": { "title": {}, "description": {} } }
}

4) Худмаблағгузорӣ ва таклифҳо

Равишҳо:
  • Edge N-gram дар сарлавҳаи subfield 'унвон. ngram '(зуд, оддӣ).
  • Пешниҳодҳои анҷомёбӣ (майдони 'анҷом') - маслиҳатҳои зуд, аммо роҳи алоҳидаи индексатсия.
  • Ҷустуҷӯ ҳамчун навъи шумо - токенизатсияро барои оғози калимаҳо ва ибораҳо муттаҳид мекунад.
Супоришҳои намунавӣ:
json
{ "suggest": { "game-suggest": { "prefix": "book o", "completion": { "field": "title_suggest", "fuzzy": { "fuzziness": 1 }}}}}

5) Синонимҳо, чопҳо ва бисёрзабонӣ

Синонимҳо: файл/рӯйхатро тавассути филтри 'синоним' бор кунед; соҳаҳои алоҳида (казино/варзиш).
Typos: 'номуайянӣ: AUTO' дар 'multi _ match', бо дарозӣ ва майдонҳо маҳдуд аст. Барои дархостҳо - режими ба итмом расонидани 'номуайян'.

Бисёрзабонӣ:
  • Индекс-ҳар як маҳал (ru/en/tr/pt-BR) ё схемаи бисёрсоҳавӣ: 'title _ ru', 'title _ en'.
  • Таҳлилгарони разные: 'русӣ', 'англисӣ', 'туркӣ', 'португалӣ'.
  • Забонро ба калиди масир гузаронед, то маҳалҳои гармро ба корбар наздиктар нигоҳ доред.

6) Филтрҳо, паҳлӯҳо ва агрегатҳо

Барои паҳлӯҳо, "калимаи калидӣ" ва "лона" -ро истифода баред.
Аз майдонҳои кардиналӣ (ID-ҳои беназир) дар маҷмӯаҳо канорагирӣ кунед - онҳоро ба майдонҳои замонавӣ ё пеш аз тирезаҳо биёред.

Ҷанбаҳои намунавӣ:
json
{
"size": 20,
"aggs": {
"by_provider": { "terms": { "field": "provider", "size": 20 } },
"by_volatility": { "terms": { "field": "volatility" } },
"rtp_hist": { "histogram": { "field": "rtp", "interval": 1 } }
}
}

7) Воридоти маълумот ва тоза кардани матн

Қубурҳои обгузар: нормализатсия, истихроҷи майдон, рамзгузории гео-рамзӣ, нест кардани HTML.
Замима/inest-ocr (агар лозим бошад): индексатсияи PDF/тасвир (бодиққат бо PII).
Лемматизатсия: тавассути анализаторҳо ё қубурҳои беруна (аломатҳои пешакӣ).

8) Шардҳо, нусхаҳо ва ILM

8. 1 Андоза ва Sharding

Камтар shards беҳтар аст. Ҳадаф: 10-50GB барои як шард барои бори омехта.
Аз 'number _ of _ shards: 1-3' оғоз кунед, дар асл миқёс. Нусхаҳо - ҳадди аққал 1 дар фурӯш.

8. 2 ILM (Ҳаёт)

гарм → гарм → хунук → нест кардани гузоришҳо/промо таърих.
Якҷоя кардани маҷбурӣ барои сегментҳои хунук.
Барои каталогҳо ва ҷустуҷӯи маҳсулот - "ҷовидона" гарм бо оптимизатсияи даврӣ.

8. 3 Алгоритми бидуни муҳоҷират

Индекси нави 'games _ v2' → alias 'бозиҳо' пас аз 'reindex' ва backfill иваз мешавад. Майдонҳои депрессия - тадриҷан тоза кунед.

9) Суратҳо, DR ва навсозиҳо

Суратҳо барои нигоҳдории объект (S3/GCS), ҷадвал ва барқароркунии чек.
Навсозиҳои гиреҳҳо, санҷиши огоҳии тақсимот (аз рӯи минтақаҳо).
Нақшаҳои DR: такрори байниминтақавӣ (CCR) барои индексатсияҳои интиқодӣ (директорияҳо, директорияҳо).

10) Бехатарӣ ва PII

TLS/MTLS байни муштарӣ ва кластер.
RBAC: нақшҳо дар як шохис/амалиёт; Dev/Stage/Prod - алоҳида.
PII/PCI: майдонҳоро бо маълумоти шахсӣ нолозим нишон надиҳед; Ниқобро истифода баред.
Ҳуқуқи фаромӯш кардан: истинодҳоро ба ҳуҷҷатҳо барои нест кардани user_id нигоҳ доред; мулоим-нест кардан + reindex/эълон.

11) Мушоҳида ва ҷустуҷӯи SLO

Нишондиҳандаҳо:
  • P50/P95/P99 таъхир ба дархост, хатогиҳои 4xx/5xx.
  • Хит кэш (дархости кэш/shard дархости кэш).
  • Истифодаи теппа, GC паузы, сегменти якҷояшавӣ, риштаҳо (ҷустуҷӯ/навиштан).
  • Рӯйпӯшҳои гарм/гиреҳҳои гарм, радкунӣ.
  • KNN: 'graph _ hits', 'search _ k', ниҳонӣ, ба хотир оред @ k.
Намунаҳои SLO:
  • Ҷустуҷӯи бозиҳо: P95 ≤ 200 мс, хатогиҳо <0. 5% дар равзанаи 30 дақиқа.
  • Маслиҳатҳо: P95 ≤ 80 мс.
  • Гибриди KNN: P95 ≤ 350ms барои натиҷаҳои Top-20.

12) Финҳо: арзиш ва нишондиҳандаҳо

Андозаи индексатсия: токенизатсияро захира кунед, 'fielddata' -и нолозимро хомӯш кунед, 'doc _ арзишҳо' -ро танҳо дар ҳолати зарурӣ истифода баред.
Қисматҳо: сиёсати якҷоякуниро ба нақша гиред, ба "тақсим" роҳ надиҳед.
KNN дар RAM/CPU гаронтар аст: лимити dims, 'num _ номзадҳо', филтри пешакӣ дар BM25.
Майдонҳои гарм дар RAM: назорат кардани додаҳои саҳроӣ/теппа; агрегатҳои "вазнин" -ро ба нишондиҳандаҳои алоҳида гиред.

13) Дархостҳои намунавӣ

13. 1 Матни пурраи саҳроӣ бо тақвият

json
{
"query": {
"multi_match": {
"query": "book of",
"fields": ["title^4","title. ngram^2","tags^2","description"]
}
},
"sort": ["_score", { "released_at": "desc" }]
}

13. 2 Филтрҳо + паҳлӯҳо

json
{
"query": {
"bool": {
"must": [{"match": {"title": "egypt"}}],
"filter": [
{ "terms": { "provider": ["Novomatic","PragmaticPlay"]}},
{ "range": { "rtp": { "gte": 95 }}}
]
}
},
"aggs": {
"by_provider": { "terms": { "field": "provider" } },
"by_year": { "date_histogram": { "field": "released_at", "calendar_interval": "year" } }
}
}

13. 3 Филтри хусусияти ҷойгиршуда

json
{
"query": {
"nested": {
"path": "features",
"query": { "bool": {
"must": [
{ "term": { "features. name": "volatility" }},
{ "term": { "features. value": "high" }}
]
}}
}
}
}

13. 4 Ҷустуҷӯи журнал (ECS) бо равшанӣ

json
{
"query": {
"bool": {
"must": [{ "match_phrase": { "message": "payment declined" }}],
"filter": [
{ "term": { "service. name": "payments" }},
{ "range": { "@timestamp": { "gte": "now-1h" }}}
]
}
},
"highlight": { "fields": { "message": { "number_of_fragments": 0 } } }
}

14) Иҷорагир ва ҷудокунӣ

Индекс ба иҷорагир (беҳтар) ё майдони 'иҷорагир _ ид' + филтри ACL (дар маҷмӯаҳо гаронтар).
Масир аз ҷониби 'иҷорагир _ ид' барои маҳаллисозии shards.
Маҳдудияти дархостҳои иҷорагир барои маҳдуд кардан/тамдиди вақт, 'дархост. марҳилаи 'посбонон.

15) Рӯйхати назорати амалисозӣ

1. Схема: 'матн/калимаи калидӣ/лона' + бисёр майдонҳо, 'зиччи _ вектор' ҳангоми зарурат.
2. Таҳлилгарон барои як забон, синонимҳо, канори нграм барои анҷом додани худкор.

3. Аҳамият: BM25 афзоиш медиҳад + гибридии k

4. Ҷанбаҳо: калимаи калидӣ/лона, ҷамъбаст танҳо барои майдонҳои "солим".
5. Индексатсия: қубурҳои обгузар (нормализатсия), боркунии партия.
6. Sharding: оғоз хурд, тахаллус барои ҳаракат, ILM барои гузоришҳои "дароз".
7. DR: ҷадвали лаҳзаҳо, санҷиши барқароршавӣ, CCR барои индексатсияҳои интиқодӣ.
8. Амният: TLS, RBAC, ниқоби PII, сиёсати несткунӣ.
9. Мушоҳида: ниҳонӣ, теппа/GC, зарбаи кэш, рехтани гарм, радкунӣ.
10. FIN Ops: андозаи индексатсия, параметризатсияи KNN, ғайрифаъол кардани 'doc _ values/fielddata'.

16) Анти-намунаҳо

Як индекс "барои ҳама": доменҳои гуногун (директория, гузоришҳо, транзаксияҳо) танзимоти гуногунро талаб мекунанд.
'Номуайянии беасос: AUTO' → оҳиста ва ғавғо дар ҳама соҳаҳо.
Синонимҳо "маънои мехӯранд": доменҳои луғатро ҷудо накунед.
Бе лона, ки дар он ҷо бастаҳои саҳроӣ § паҳлӯҳои бардурӯғ лозиманд.
Аз ҳад зиёд shards (як ҳуҷҷат) - ҳолати кластерӣ.
Истифода набурдани тахаллус ҳангоми муҳоҷират - алоқаҳои қатъ ва шикаста.
Индексатсияи PII "тавре ки ҳаст" - хатарҳои танзимкунанда ва шохисҳои гаронбаҳо.

17) Контексти IGaming/fintech: Дастурҳои зуд

Ҷустуҷӯи бозиҳо: 'multi _ match' бо суръатбахшии 'title * 4', 'барчаспҳои = 2', паҳлӯҳо аз ҷониби провайдер/ноустуворӣ, филтрҳо аз рӯи минтақа/асъор, гибрид бо векторҳо барои "мавзӯъҳо" (масалан, "Миср", "меваи классикӣ").
Promo/bonuses: синонимҳо ("freespins", "spins ройгон"), филтрҳои додаҳо 'фаъол _ аз/active _ to', маслиҳатҳо тавассути анҷом.
Гузоришҳои KYC/AML: схемаи ECS, матни пурра аз ҷониби 'паём', маҷмӯаҳо аз 'rule _ name', 'кишвар', аномалияҳо аз ҷониби гистограммаи '@ timestamp'.
Феҳристи провайдер: майдонҳои калимаҳои калидӣ барои паҳлӯҳо ва навъҳо; тавсифи матн - 'матн' бо морфология.
Саҳифаҳои танзимкунанда: майдонҳои бисёрзабона, 'search _ as _ you _ type' барои маслиҳатҳои мулоим.

Ҷамъ

Ҷустуҷӯи муассир дар Elasticsearch на танҳо "фурӯзон кардани BM25" аст: инҳо таҳлилгарон ва харитасозии дуруст, мултипликатсияҳо ва лонаҳо, гибридии BM25 + векторҳо, ҷабҳаҳои тозаву озода, интизоми sharding ва ILM, SLO-ҳои тоза ва мушоҳидашаванда, инчунин бехатарӣ ва Фин Pops. Бо ин принсипҳо, ҷустуҷӯи шумо зуд, мувофиқ ва пешгӯишаванда хоҳад буд ва ба қуллаҳои трафики платформаи маҳсулот тоб меорад.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.