elasticsearch学习
一、分词器指定
1、如果想要在创建索引和查询时分别使用不同的分词器,ElasticSearch也是支持的。
2、在创建索引,指定analyzer,ES在创建时会先检查是否设置了analyzer字段,如果没定义就用ES预设的
3、在查询时,指定search_analyzer,ES查询时会先检查是否设置了search_analyzer字段,如果没有设置,还会去检查创建索引时是否指定了analyzer,如果有则使用;还是没有还设置才会去使用ES预设的
二、ES使用分词器
1、插入文档时,将text类型的字段做分词然后插入倒排索引,此时就可能用到analyzer指定的分词器
2、在查询时,先对要查询的text类型的输入做分词,再去倒排索引搜索,此时就可能用到search_analyzer指定的分词器
三、demo(使用中文+拼音分词器)
PUT order
{
"mappings" : {
"properties" : {
"fullTitle" : {
"type" : "text",
"fields" : {
"suggest" : {
"type" : "completion",
"analyzer" : "ik_smart_pinyin",
"preserve_separators" : true,
"preserve_position_increments" : true,
"max_input_length" : 50
}
},
"analyzer" : "ik_max_word_pinyin",
"search_analyzer": "ik_smart_pinyin",
"store": true
},
"id" : {
"type" : "long"
},
"longTitle" : {
"type" : "text",
"copy_to" : [
"fullTitle"
],
"analyzer" : "ik_max_word_pinyin",
"search_analyzer": "ik_smart_pinyin"
},
"title" : {
"type" : "text",
"copy_to" : [
"fullTitle"
],
"analyzer" : "ik_max_word_pinyin",
"search_analyzer": "ik_smart_pinyin"
},
"creator":{
"type": "text",
"fields": {
"mykeyword":{
"type":"keyword"
}
}
},
"price":{
"type": "float"
}
}
},
"settings" : {
"index" : {
"refresh_interval" : "5s",
"number_of_shards" : "5",
"number_of_replicas": "1"
},"analysis": {
"analyzer": {
"ik_smart_pinyin": {
"type": "custom",
"tokenizer": "ik_smart",
"filter": ["my_pinyin"]
},
"ik_max_word_pinyin": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": ["my_pinyin"]
}
},
"filter": {
"my_pinyin": {
"type": "pinyin",
"keep_separate_first_letter": false,
"keep_full_pinyin": true,
"keep_original": true,
"limit_first_letter_length": 16,
"lowercase": true,
"remove_duplicated_term": true,
"keep_joined_full_pinyin": true
}
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2013-05-20 c#中能不能直接操作内存,为什么?
2013-05-20 .net GC 和工作原理
2013-05-20 Session丢失解决方案
2013-05-20 什么是mvc
2013-05-20 Linq