我面临弹性搜索的问题,我不希望我的索引术语被分析。但是elasticsearch有一些默认设置,可以在空间上对其进行标记。 因此我的facet查询不会返回我想要的结果。
我读到索引类型属性中的"index" : "not_analyzed"
应该有效。
但问题是我手头上不知道我的文档结构。我会在不知道表结构的情况下将随机MySQL数据库索引到elasticsearch。
如何设置elasticsearch,默认情况下使用"index" : "not_analyzed"
,否则请求。
感谢
PS:我正在使用java,如果我可以直接使用任何API,我会喜欢它。
答案 0 :(得分:17)
我使用动态模板 - 它应该做你想要的:
{
"testtemplates" : {
"dynamic_templates" : [
{
"template1" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
]
}
}
此处有关此方法的更多信息:
重要:强> 如果有人建议这种方法来解决 not_analyzed 问题,它将无法正常工作! keyword 分析器对数据进行一些分析并将数据转换为小写字母。
e.g。
Data: ElasticSearchRocks ==> Keyword Analyzer: elasticsearchrocks
自己尝试分析查询并查看它。
curl -XPUT localhost:9200/testindex -d '{
"index" : {
"analysis" : {
"analyzer" : {
"default" : {
"type" : "keyword"
}
}
}
}
}'
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-keyword-analyzer.html
答案 1 :(得分:6)
在index.analysis.analyzer.default.type: keyword
中添加elasticsearch.yml
。