我在elasticsearch中遇到了一个问题,我不想分析我的索引术语。但是elasticsearch有一些默认设置,它在空间上标记它。因此我的facet查询没有返回我想要的结果。
我读到索引类型的属性中的"index":"not_analyzed"
应该可以工作。但问题是我事先不知道我的文档结构。我会在不知道表结构的情况下将随机MySQL数据库索引到elasticsearch。
如何设置elasticsearch,使其默认使用"index":"not_analyzed"
,直到另有要求。谢谢
PS:我正在使用java如果我可以直接使用任何API,我会喜欢它。
我会使用动态模板-它应该做你正在寻找的:
{
"testtemplates" : {
"dynamic_templates" : [
{
"template1" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
]
}
}
更多关于这种方法的信息:
https://www.elastic.co/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html#dynamic-templates
重要提示:如果有人建议这种方法来解决not_analyzed问题,它将不起作用!关键字分析器对数据进行一些分析,并将数据转换为小写字母。
例如数据: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
在您的elasticsearch. yml
中添加index.analysis.analyzer.default.type:关键字
。