{"id":13838570,"url":"https://github.com/aparo/opensearch-analysis-ik","last_synced_at":"2025-04-13T06:32:01.740Z","repository":{"id":37101490,"uuid":"430094639","full_name":"aparo/opensearch-analysis-ik","owner":"aparo","description":"The IK Analysis plugin integrates Lucene IK analyzer into OpenSearch, support customized dictionary. Port of https://github.com/medcl/elasticsearch-analysis-ik","archived":false,"fork":false,"pushed_at":"2024-04-14T15:19:42.000Z","size":7799,"stargazers_count":39,"open_issues_count":13,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-21T07:25:47.725Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aparo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"patreon":"medcl","custom":["https://www.buymeacoffee.com/medcl"]}},"created_at":"2021-11-20T12:17:23.000Z","updated_at":"2024-06-07T08:32:57.456Z","dependencies_parsed_at":"2023-02-19T00:00:50.068Z","dependency_job_id":"0b46e8cf-2a92-4247-8be4-b436aefa9ea8","html_url":"https://github.com/aparo/opensearch-analysis-ik","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aparo%2Fopensearch-analysis-ik","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aparo%2Fopensearch-analysis-ik/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aparo%2Fopensearch-analysis-ik/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aparo%2Fopensearch-analysis-ik/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aparo","download_url":"https://codeload.github.com/aparo/opensearch-analysis-ik/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248674659,"owners_count":21143760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T16:00:21.777Z","updated_at":"2025-04-13T06:32:01.683Z","avatar_url":"https://github.com/aparo.png","language":"Java","funding_links":["https://patreon.com/medcl","https://www.buymeacoffee.com/medcl"],"categories":["Plugins"],"sub_categories":[],"readme":"IK Analysis for OpenSearch\n==========================\n\nThis is a port of [medcl's IK Analysis](https://github.com/medcl/elasticsearch-analysis-ik).\n\nThe IK Analysis plugin integrates Lucene IK analyzer (http://code.google.com/p/ik-analyzer/) into OpenSearch, and support customized dictionary.\n\nAnalyzer: `ik_smart` , `ik_max_word` , Tokenizer: `ik_smart` , `ik_max_word`\n\nInstall\n-------\n\n| OS    | Command |\n| ----- | ------- |\n| 1.1.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.1.0/opensearch-analisys-ik-1.1.0.zip` |\n| 1.2.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.2.0/opensearch-analisys-ik-1.2.0.zip` |\n| 1.2.2  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.2.2/opensearch-analisys-ik-1.2.2.zip` |\n| 1.2.3  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.2.3/opensearch-analisys-ik-1.2.3.zip` |\n| 1.3.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.3.0/opensearch-analisys-ik-1.3.0.zip` |\n| 1.3.1  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.3.1/opensearch-analisys-ik-1.3.1.zip` |\n| 1.3.2  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/1.3.2/opensearch-analisys-ik-1.3.2.zip` |\n| 2.0.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.0.0.1/opensearch-analisys-ik-2.0.0.1.zip` |\n| 2.0.1  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.0.1/opensearch-analisys-ik-2.0.1.zip` |\n| 2.1.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.1.0.0/opensearch-analisys-ik-2.1.0.0.zip` |\n| 2.2.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.2.0/opensearch-analisys-ik-2.2.0.zip` |\n| 2.2.1  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.2.0/opensearch-analisys-ik-2.2.1.zip` |\n| 2.3.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.3.0/opensearch-analisys-ik-2.3.0.zip` |\n| 2.4.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.4.0/opensearch-analisys-ik-2.4.0.zip` |\n| 2.4.1  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.4.1/opensearch-analisys-ik-2.4.1.zip` |\n| 2.5.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.5.0/opensearch-analisys-ik-2.5.0.zip` |\n| 2.6.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.6.0/opensearch-analisys-ik-2.6.0.zip` |\n| 2.7.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.7.0/opensearch-analisys-ik-2.7.0.zip` |\n| 2.8.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.8.0/opensearch-analisys-ik.zip` |\n| 2.9.0  | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.9.0/opensearch-analisys-ik.zip` |\n| 2.10.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.10.0/opensearch-analisys-ik.zip` |\n| 2.11.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.11.0/opensearch-analisys-ik.zip` |\n| 2.11.1 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.11.1/opensearch-analisys-ik.zip` |\n| 2.12.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.12.0/opensearch-analisys-ik.zip` |\n| 2.13.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.13.0/opensearch-analisys-ik.zip` |\n| 2.14.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.14.0/opensearch-analisys-ik.zip` |\n| 2.15.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.15.0/opensearch-analisys-ik.zip` |\n| 2.16.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.16.0/opensearch-analisys-ik.zip` |\n| 2.17.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.17.0/opensearch-analisys-ik.zip` |\n| 2.18.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.18.0/opensearch-analisys-ik.zip` |\n| 2.19.0 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.19.0/opensearch-analisys-ik.zip` |\n| 2.19.1 | `bin/opensearch-plugin install https://github.com/aparo/opensearch-analysis-ik/releases/download/2.19.1/opensearch-analisys-ik.zip` |\n\n# Note\nFor version 2.0.0 or below, there is a bug in coping the final config data. After having installed the plugin please copy the *config* dir in plugin directory.\n\n#### Quick Example\n\n1.create a index\n\n```bash\ncurl -XPUT http://localhost:9200/index\n```\n\n2.create a mapping\n\n```bash\ncurl -XPOST http://localhost:9200/index/_mapping -H 'Content-Type:application/json' -d'\n{\n        \"properties\": {\n            \"content\": {\n                \"type\": \"text\",\n                \"analyzer\": \"ik_max_word\",\n                \"search_analyzer\": \"ik_smart\"\n            }\n        }\n\n}'\n```\n\n3.index some docs\n\n```bash\ncurl -XPOST http://localhost:9200/index/_create/1 -H 'Content-Type:application/json' -d'\n{\"content\":\"美国留给伊拉克的是个烂摊子吗\"}\n'\n```\n\n```bash\ncurl -XPOST http://localhost:9200/index/_create/2 -H 'Content-Type:application/json' -d'\n{\"content\":\"公安部：各地校车将享最高路权\"}\n'\n```\n\n```bash\ncurl -XPOST http://localhost:9200/index/_create/3 -H 'Content-Type:application/json' -d'\n{\"content\":\"中韩渔警冲突调查：韩警平均每天扣1艘中国渔船\"}\n'\n```\n\n```bash\ncurl -XPOST http://localhost:9200/index/_create/4 -H 'Content-Type:application/json' -d'\n{\"content\":\"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首\"}\n'\n```\n\n4.query with highlighting\n\n```bash\ncurl -XPOST http://localhost:9200/index/_search  -H 'Content-Type:application/json' -d'\n{\n    \"query\" : { \"match\" : { \"content\" : \"中国\" }},\n    \"highlight\" : {\n        \"pre_tags\" : [\"\u003ctag1\u003e\", \"\u003ctag2\u003e\"],\n        \"post_tags\" : [\"\u003c/tag1\u003e\", \"\u003c/tag2\u003e\"],\n        \"fields\" : {\n            \"content\" : {}\n        }\n    }\n}\n'\n```\n\nResult\n\n```json\n{\n    \"took\": 14,\n    \"timed_out\": false,\n    \"_shards\": {\n        \"total\": 5,\n        \"successful\": 5,\n        \"failed\": 0\n    },\n    \"hits\": {\n        \"total\": 2,\n        \"max_score\": 2,\n        \"hits\": [\n            {\n                \"_index\": \"index\",\n                \"_type\": \"fulltext\",\n                \"_id\": \"4\",\n                \"_score\": 2,\n                \"_source\": {\n                    \"content\": \"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首\"\n                },\n                \"highlight\": {\n                    \"content\": [\n                        \"\u003ctag1\u003e中国\u003c/tag1\u003e驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首 \"\n                    ]\n                }\n            },\n            {\n                \"_index\": \"index\",\n                \"_type\": \"fulltext\",\n                \"_id\": \"3\",\n                \"_score\": 2,\n                \"_source\": {\n                    \"content\": \"中韩渔警冲突调查：韩警平均每天扣1艘中国渔船\"\n                },\n                \"highlight\": {\n                    \"content\": [\n                        \"均每天扣1艘\u003ctag1\u003e中国\u003c/tag1\u003e渔船 \"\n                    ]\n                }\n            }\n        ]\n    }\n}\n```\n\n### Dictionary Configuration\n\n`IKAnalyzer.cfg.xml` can be located at `{conf}/analysis-ik/config/IKAnalyzer.cfg.xml`\nor `{plugins}/opensearch-analysis-ik-*/config/IKAnalyzer.cfg.xml`\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!DOCTYPE properties SYSTEM \"http://java.sun.com/dtd/properties.dtd\"\u003e\n\u003cproperties\u003e\n    \u003ccomment\u003eIK Analyzer 扩展配置\u003c/comment\u003e\n    \u003c!--用户可以在这里配置自己的扩展字典 --\u003e\n    \u003centry key=\"ext_dict\"\u003ecustom/mydict.dic;custom/single_word_low_freq.dic\u003c/entry\u003e\n     \u003c!--用户可以在这里配置自己的扩展停止词字典--\u003e\n    \u003centry key=\"ext_stopwords\"\u003ecustom/ext_stopword.dic\u003c/entry\u003e\n     \u003c!--用户可以在这里配置远程扩展字典 --\u003e\n    \u003centry key=\"remote_ext_dict\"\u003elocation\u003c/entry\u003e\n     \u003c!--用户可以在这里配置远程扩展停止词字典--\u003e\n    \u003centry key=\"remote_ext_stopwords\"\u003ehttp://xxx.com/xxx.dic\u003c/entry\u003e\n\u003c/properties\u003e\n```\n\n### 热更新 IK 分词使用方法\n\n目前该插件支持热更新 IK 分词，通过上文在 IK 配置文件中提到的如下配置\n\n```xml\n     \u003c!--用户可以在这里配置远程扩展字典 --\u003e\n    \u003centry key=\"remote_ext_dict\"\u003elocation\u003c/entry\u003e\n     \u003c!--用户可以在这里配置远程扩展停止词字典--\u003e\n    \u003centry key=\"remote_ext_stopwords\"\u003elocation\u003c/entry\u003e\n```\n\n其中 `location` 是指一个 url，比如 `http://yoursite.com/getCustomDict`，该请求只需满足以下两点即可完成分词热更新。\n\n1. 该 http 请求需要返回两个头部(header)，一个是 `Last-Modified`，一个是 `ETag`，这两者都是字符串类型，只要有一个发生变化，该插件就会去抓取新的分词进而更新词库。\n\n2. 该 http 请求返回的内容格式是一行一个分词，换行符用 `\\n` 即可。\n\n满足上面两点要求就可以实现热更新分词了，不需要重启 ES 实例。\n\n可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里，放在 nginx 或其他简易 http server 下，当 .txt 文件修改时，http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇，并更新这个 .txt 文件。\n\nhave fun.\n\n常见问题\n-------\n\n1.自定义词典为什么没有生效？\n\n请确保你的扩展词典的文本格式为 UTF8 编码\n\n2.如何手动安装？\n\n\n```bash\ngit clone https://github.com/medcl/opensearch-analysis-ik\ncd opensearch-analysis-ik\ngit checkout tags/{version}\nmvn clean\nmvn compile\nmvn package\n```\n\n拷贝和解压release下的文件: #{project_path}/opensearch-analysis-ik/target/releases/opensearch-analysis-ik-*.zip 到你的 opensearch 插件目录, 如: plugins/ik\n重启opensearch\n\n3.分词测试失败\n请在某个索引下调用analyze接口测试,而不是直接调用analyze接口\n如:\n```bash\ncurl -XGET \"http://localhost:9200/your_index/_analyze\" -H 'Content-Type: application/json' -d'\n{\n   \"text\":\"中华人民共和国MN\",\"tokenizer\": \"my_ik\"\n}'\n```\n\n\n4. ik_max_word 和 ik_smart 什么区别?\n\n\nik_max_word: 会将文本做最细粒度的拆分，比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”，会穷尽各种可能的组合，适合 Term Query；\n\nik_smart: 会做最粗粒度的拆分，比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”，适合 Phrase 查询。\n\n\nThanks\n------\nYourKit supports IK Analysis for ElasticSearch project with its full-featured Java Profiler.\nYourKit, LLC is the creator of innovative and intelligent tools for profiling\nJava and .NET applications. Take a look at YourKit's leading software products:\n\u003ca href=\"http://www.yourkit.com/java/profiler/index.jsp\"\u003eYourKit Java Profiler\u003c/a\u003e and\n\u003ca href=\"http://www.yourkit.com/.net/profiler/index.jsp\"\u003eYourKit .NET Profiler\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faparo%2Fopensearch-analysis-ik","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faparo%2Fopensearch-analysis-ik","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faparo%2Fopensearch-analysis-ik/lists"}