通过mongodb河在弹性搜索创建索引映射没有生效
我想使用以下命令使用mongodb-river在elasticsearch中索引mongodb,但文档映射没有生效。它仍然使用默认分析器(标准)字段text
通过mongodb河在弹性搜索创建索引映射没有生效
Mongodb-river 该文档指定创建索引,但没有关于如何提供自定义映射的文档。这是我试过的。是否有任何其他文件,我可以找到如何指定自定义分析仪等在使用mongodb河。
curl -XPUT "localhost:9200/_river/autocompleteindex/_meta" -d ' {
"type": "mongodb",
"mongodb": {
"host": "rahulg-dc",
"port": "27017",
"db": "qna",
"collection": "autocomplete_questions"
},
"index": {
"name": "autocompleteindex",
"type": "autocomplete_questions",
"analysis" : {
"analyzer" : {
"str_search_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase"]
},
"str_index_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase", "ngram"]
}
},
"filter" : {
"ngram" : {
"type" : "ngram",
"min_gram" : 2,
"max_gram" : 20
}
}
}
},
"autocompleteindex": {
"_boost" : {
"name" : "po",
"null_value" : 1.0
},
"properties": {
"po": {
"type": "double"
},
"text": {
"type": "string",
"boost": 3.0,
"search_analyzer" : "str_search_analyzer",
"index_analyzer" : "str_index_analyzer"
}
}
}
}'
该查询返回正确的结果是我搜索完整的单词,但不匹配任何子字符串匹配。此外,推动因素并未显示其效果。
我在做什么错?
回答:
你必须先创建你的index settings(分析)索引:
"analysis" : { "analyzer" : {
"str_search_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase"]
},
"str_index_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase", "ngram"]
}
},
"filter" : {
"ngram" : {
"type" : "ngram",
"min_gram" : 2,
"max_gram" : 20
}
}
}
然后你可以define a mapping你的类型:
"autocomplete_questions": { "_boost" : {
"name" : "po",
"null_value" : 1.0
},
"properties": {
"po": {
"type": "double"
},
"text": {
"type": "string",
"boost": 3.0,
"search_analyzer" : "str_search_analyzer",
"index_analyzer" : "str_index_analyzer"
}
}
}
也只有这样,你可以创建河流:
curl -XPUT "localhost:9200/_river/autocompleteindex/_meta" -d ' {
"type": "mongodb",
"mongodb": {
"host": "rahulg-dc",
"port": "27017",
"db": "qna",
"collection": "autocomplete_questions"
},
"index": {
"name": "autocompleteindex",
"type": "autocomplete_questions"} }
帮助吗?
以上是 通过mongodb河在弹性搜索创建索引映射没有生效 的全部内容, 来源链接: utcz.com/qa/264439.html