PUT /chinese
{
"index": {
"analysis": {
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [
"中国人民=>天朝人民",
"北京,帝都",
"北,帝",
"上海,魔都",
"南京=>金陵"
]
}
},
"analyzer": {
"my_synonyms": {
"tokenizer": "ik_smart",
"filter": [
"lowercase",
"my_synonym_filter"
]
}
},
"mappings": {
"products":{
"properties":{
"price":{
"type":"long"
},
"productID":{
"type":"text",
"analyzer":"my_synonyms"
}
}
}
}
}
}
}
添加索引语句如下POST /chinese/products/_bulk
{"index": {"_id": 1}}
{ "price" : 10, "productID" : "北京的烤鸭" }
{ "index": { "_id": 2 }}
{ "price" : 20, "productID" : "天津的狗不理" }
{ "index": { "_id": 3 }}
{ "price" : 30, "productID" : "南京的水煮鸭" }
{ "index": { "_id": 4 }}
{ "price" : 30, "productID" : "上海的小笼包" }
查询语句如下GET /chinese/products/_search
{
"query": {
"match": {
"productID": {
"analyzer": "my_synonyms",
"query": "京"
}
}
}
}
这样查询出来是有结果的,但是输入”北京“或者其他的词语,查询的结果都是null。下面这个分词查看也是有的,分成了,北京,的,烤鸭
GET /chinese/_analyze
{
"analyzer": "my_synonyms",
"text":"北京的烤鸭"
}
有大神知道是为什么吗???拜谢呀
9 个回复
rochy - rochy_he
赞同来自: zz_hello
elasticStack - 90后it大数据男
赞同来自:
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
zqc0512 - andy zhou
赞同来自:
zz_hello
赞同来自:
另外,上面那个问题,我想要的是在IK分词器的基础上再建立一个近义词的分析器,索引那样建立了索引,但是就出现了这样的问题?所以问一下那要怎么建立近义词的分析器呢
rochy - rochy_he
赞同来自:
查询“北京”可以返回结果
rochy - rochy_he
赞同来自:
我的执行步骤是:
1. 执行 PUT /chinese
2. 执行 Bulk
3. 执行 _search
你可以看看 products 的 mapping,是不是没有生效呀
zz_hello
赞同来自:
rochy - rochy_he
赞同来自: