WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
The English summary is being prepared. Showing the original description.
Mapping design, query optimization, aggregation patterns, index lifecycle management, and search relevance tuning.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Search and analytics patterns for Elasticsearch deployments.
{
"mappings": {
"dynamic": "strict",
"properties": {
"id": { "type": "keyword" },
"title": {
"type": "text",
"analyzer": "standard",
"fields": {
"keyword": { "type": "keyword" },
"autocomplete": {
"type": "text",
"analyzer": "autocomplete_analyzer"
}
}
},
"description": {
"type": "text",
"analyzer": "standard"
},
"price": { "type": "scaled_float", "scaling_factor": 100 },
"category": { "type": "keyword" },
"tags": { "type": "keyword" },
"location": { "type": "geo_point" },
"created_at": { "type": "date" },
"metadata": {
"type": "object",
"enabled": false
}
}
},
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"analysis": {
"analyzer": {
"autocomplete_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "autocomplete_filter"]
}
},
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 20
}
}
}
}
}
import { Client } from '@elastic/elasticsearch'
const client = new Client({ node: process.env.ELASTICSEARCH_URL })
// Full-text search with boosting and highlighting
async function searchProducts(query: string, filters: ProductFilters) {
const result = await client.search({
index: 'products',
body: {
query: {
bool: {
must: [
{
multi_match: {
query,
fields: ['title^3', 'description', 'tags^2'], // Title 3x boost
type: 'best_fields',
fuzziness: 'AUTO', // Typo tolerance
prefix_length: 2, // First 2 chars must match exactly
}
}
],
filter: [
...(filters.category ? [{ term: { category: filters.category } }] : []),
...(filters.minPrice || filters.maxPrice ? [{
range: {
price: {
...(filters.minPrice && { gte: filters.minPrice }),
...(filters.maxPrice && { lte: filters.maxPrice }),
}
}
}] : []),
...(filters.tags?.length ? [{ terms: { tags: filters.tags } }] : []),
],
}
},
highlight: {
fields: {
title: { number_of_fragments: 0 }, // Full field highlight
description: { fragment_size: 150 }, // Snippet
},
pre_tags: ['<mark>'],
post_tags: ['</mark>'],
},
sort: [
{ _score: 'desc' },
{ created_at: 'desc' },
],
from: filters.offset ?? 0,
size: filters.limit ?? 20,
}
})
return {
hits: result.hits.hits.map(hit => ({
...hit._source,
score: hit._score,
highlights: hit.highlight,
})),
total: (result.hits.total as { value: number }).value,
}
}
// Autocomplete search (edge_ngram)
async function autocomplete(prefix: string) {
const result = await client.search({
index: 'products',
body: {
query: {
match: {
'title.autocomplete': {
query: prefix,
operator: 'and',
}
}
},
_source: ['title', 'category'],
size: 10,
}
})
return result.hits.hits.map(h => h._source)
}
// Faceted search: get filter counts alongside results
async function searchWithFacets(query: string) {
const result = await client.search({
index: 'products',
body: {
query: { match: { title: query } },
size: 20,
aggs: {
// Category facets
categories: {
terms: { field: 'category', size: 20 }
},
// Price ranges
price_ranges: {
range: {
field: 'price',
ranges: [
{ key: 'budget', to: 50 },
{ key: 'mid', from: 50, to: 200 },
{ key: 'premium', from: 200 },
]
}
},
// Price statistics
price_stats: {
stats: { field: 'price' }
},
// Date histogram
created_over_time: {
date_histogram: {
field: 'created_at',
calendar_interval: 'month',
}
},
}
}
})
return {
hits: result.hits.hits,
facets: {
categories: result.aggregations?.categories,
priceRanges: result.aggregations?.price_ranges,
priceStats: result.aggregations?.price_stats,
timeline: result.aggregations?.created_over_time,
}
}
}
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_primary_shard_size": "50gb",
"max_age": "7d"
},
"set_priority": { "priority": 100 }
}
},
"warm": {
"min_age": "30d",
"actions": {
"shrink": { "number_of_shards": 1 },
"forcemerge": { "max_num_segments": 1 },
"set_priority": { "priority": 50 },
"allocate": {
"number_of_replicas": 0,
"require": { "data": "warm" }
}
}
},
"cold": {
"min_age": "90d",
"actions": {
"set_priority": { "priority": 0 },
"freeze": {},
"allocate": {
"require": { "data": "cold" }
}
}
},
"delete": {
"min_age": "365d",
"actions": {
"delete": {}
}
}
}
}
}
async function bulkIndex(documents: Product[]): Promise<void> {
const body = documents.flatMap(doc => [
{ index: { _index: 'products', _id: doc.id } },
doc,
])
const result = await client.bulk({ body, refresh: false }) // No refresh for throughput
if (result.errors) {
const erroredItems = result.items.filter((item: any) => item.index?.error)
console.error(`Bulk indexing errors: ${erroredItems.length}/${documents.length}`)
for (const item of erroredItems.slice(0, 5)) {
console.error(item.index?.error)
}
}
}
// Reindex with zero downtime using aliases
async function reindexWithAlias(oldIndex: string, newIndex: string, alias: string) {
// 1. Create new index with updated mappings
await client.indices.create({ index: newIndex, body: newMappings })
// 2. Reindex data
await client.reindex({
body: { source: { index: oldIndex }, dest: { index: newIndex } },
wait_for_completion: true,
})
// 3. Atomic alias swap
await client.indices.updateAliases({
body: {
actions: [
{ remove: { index: oldIndex, alias } },
{ add: { index: newIndex, alias } },
]
}
})
}
dynamic: strict (no surprise field types)No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
The English summary is being prepared. Showing the original description.
axe-core integration, WCAG 2.2 AA checklist, keyboard navigation testing, screen reader testing, and ARIA pattern validation.
The English summary is being prepared. Showing the original description.
Steam-style achievement system with XP, levels, streaks, and skill trees. Gamifies the development workflow. 25 achievements across 5 categories.
The English summary is being prepared. Showing the original description.
Framework for measuring and tracking agent response quality over time. Detects regressions before they reach production. Use when evaluating agent changes, auditing quality, or establishing performance baselines.
The English summary is being prepared. Showing the original description.
Agent Context Isolation
The English summary is being prepared. Showing the original description.
Agent ve skill dosyalarinin yapisal dogrulamasi. Frontmatter kontrol, naming convention, zorunlu bolum kontrolu, tutarlilik denetimi. Yeni agent/skill eklendiginde veya mevcut dosyalar duzenlediginde otomatik calistirilir.
The English summary is being prepared. Showing the original description.