infinilabs

infinilabs/analysis-ik

Java Apache-2.0 Dev Tools

🚌 The IK Analysis plugin integrates Lucene IK analyzer into Elasticsearch and OpenSearch, support customized dictionary.

17.5k stars
3.3k forks
recent
GitHub +5 / week

17.5k

Stars

3.3k

Forks

18

Open issues

30

Contributors

Latest 06 May 2024

AI Analysis

IK Analysis is a plugin that integrates the Lucene IK analyzer into Elasticsearch and OpenSearch, enabling Chinese language text analysis with customizable dictionaries. It is purpose-built for organizations requiring Chinese-language full-text search capabilities in these search platforms; it is not a general-purpose text analysis tool and does not serve use cases where English or other language analyzers are the primary need.

Dev Tools Library Discovery value: 3/10
Documentation 8/10
Activity 10/10
Community 9/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

elasticsearch-plugin text-analysis chinese-nlp opensearch lucene
Actively maintained Well documented Niche/specialized use case Popular Production ready
Deep Analysis · Based on README and public signals
2w ago

IK Analyzer brings Chinese word segmentation to Elasticsearch and OpenSearch with customizable dictionaries

analysis-ik integrates the Lucene IK analyzer into Elasticsearch and OpenSearch, solving the fundamental problem of Chinese text tokenization — standard whitespace-based tokenizers are useless for Chinese, Japanese, and other CJK languages that lack word boundaries. It offers two modes: ik_max_word (finest-grained segmentation) and ik_smart (coarser, semantically guided). Custom and hot-reloadable dictionaries allow domain-specific vocabulary without restarting the cluster. Built for any team running Elasticsearch or OpenSearch with Chinese-language content, it is effectively the default choice in that ecosystem.

Origin

Created in December 2011, IK Analysis predates much of the modern Elasticsearch plugin ecosystem. Originally a standalone Lucene project, it was adapted for Elasticsearch early in that platform's rise. Maintenance was taken over by INFINI Labs, ensuring continued support across Elasticsearch and OpenSearch version upgrades.

Growth

Growth was driven almost entirely by the explosion of Elasticsearch adoption in China during the 2013–2020 period. With 17,468 stars and 3,278 forks, it became the de facto standard for Chinese search. Growth is now slow (2 stars/week) — consistent with a mature, widely-deployed utility rather than a growing project seeking new users. Stewardship by INFINI Labs stabilized long-term maintenance after earlier periods of uncertainty.

In production

Strong indirect adoption evidence: 17,468 stars and 3,278 forks place this among the most-starred Elasticsearch plugins globally. It is routinely referenced in Chinese-language developer communities, tutorials, and enterprise search stacks. INFINI Labs maintaining a dedicated release distribution endpoint (release.infinilabs.com) suggests active commercial and community usage at scale. Direct production case studies are not cited in the README, but adoption at scale is reasonably inferred from the repository's age, fork count, and ecosystem presence.

Code analysis
Architecture

Appears to follow standard Elasticsearch plugin architecture — a JAR registered as an analysis plugin exposing named analyzers and tokenizers. Likely wraps the original IK Lucene analyzer with Elasticsearch-specific plugin lifecycle hooks. Configuration via XML file (IKAnalyzer.cfg.xml) supports local dictionary files and remote HTTP-based hot-reload endpoints using Last-Modified/ETag headers for change detection.

Tests

A CI test badge is present in the README (GitHub Actions workflow 'test.yml'), indicating automated testing exists. Specific coverage metrics are not documented in the README.

Maintenance

Last push was 2026-05-11, approximately 6 weeks before the evaluation date — indicating active maintenance. The project appears to track Elasticsearch and OpenSearch version releases, which is operationally critical for plugin compatibility. INFINI Labs provides a dedicated release server, suggesting organized release management.

Honest verdict

ADOPT IF: you are building search over Chinese-language content on Elasticsearch or OpenSearch and need accurate word segmentation with domain-specific vocabulary support. AVOID IF: your use case is purely English or Latin-script languages, or you require deep NLP capabilities such as named entity recognition or semantic understanding beyond tokenization. MONITOR IF: you are on a fast-moving Elasticsearch version track, as plugin compatibility with new major versions can lag by weeks and may block upgrades.

Independent dimensions

Mainstream potential

4/10

Technical importance

8/10

Adoption evidence

8/10

Risks
  • Plugin compatibility with new Elasticsearch/OpenSearch major versions can create upgrade blockers; historical gaps have occurred before INFINI Labs took over stewardship.
  • The underlying IK segmentation algorithm is dictionary-based and does not leverage neural or statistical models, meaning segmentation quality depends heavily on dictionary completeness for domain-specific or neologistic vocabulary.
  • Hot-reload dictionary feature relies on external HTTP servers returning correct cache headers; misconfiguration can silently fail to update dictionaries.
  • INFINI Labs is a single organizational maintainer; if their priorities shift, the project could face delayed version support, though the Apache-2.0 license mitigates lock-in risk.
  • No explicit documentation of scalability limits or behavior under high-throughput indexing scenarios is present in the README — performance characteristics at scale are not independently verified.
Prediction

Likely to remain the default Chinese analyzer plugin for Elasticsearch/OpenSearch for the foreseeable future. Slow but stable growth. May face incremental pressure from neural/embedding-based search approaches that reduce reliance on explicit tokenization.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Java
100%

Information

Language
Java
License
Apache-2.0
Last updated
1w ago
Created
177mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

infinilabs

infinilabs/analysis-pinyin

A specialized Pinyin analysis plugin for Elasticsearch and OpenSearch that...

3.1k Java Dev Tools
ankane

ankane/searchkick

Searchkick is a Ruby gem that adds intelligent full-text search capabilities to...

6.7k Ruby
elastic

elastic/elasticsearch-labs

A curated collection of executable Python notebooks and sample applications...

1.1k Jupyter Notebook AI & ML
apache

apache/lucene

Apache Lucene is a high-performance, full-featured text search engine library...

3.5k Java Data
elastic

elastic/elasticsearch

Elasticsearch is a distributed search and analytics engine built on Apache...

77.6k Java Data
vs. alternatives
Elasticsearch built-in CJK analyzer

Ships with Elasticsearch by default; performs bigram tokenization (every two-character pair). Simpler but produces large indexes and poor precision for Chinese queries. IK is generally preferred for Chinese-specific use cases.

elasticsearch-analysis-smartcn

Official Elasticsearch plugin using a statistical Chinese segmentation model. Maintained by Elastic but with less community customization support and no hot-reload dictionary feature. IK is typically preferred in China-focused deployments.

jieba (Python)

Popular Chinese segmentation library used outside the Elasticsearch context. Can be integrated via custom pipelines but requires preprocessing rather than native Elasticsearch analyzer support. Different deployment model entirely.

HanLP

More sophisticated NLP toolkit with deep learning-based segmentation options. Some community plugins exist for Elasticsearch, but they are less mature and harder to maintain across ES versions. IK remains simpler to operate.

OpenSearch built-in analysis

OpenSearch bundles limited CJK support natively. IK fills the same gap in OpenSearch as it does in Elasticsearch, and the plugin explicitly supports both platforms — a practical advantage.