我在Elasticsearch上遇到问题,我不希望对索引项进行分析。但是elasticsearch有一些默认设置,可以在空间上标记它。因此,我的方面查询未返回我想要的结果。
我读到"index" : "not_analyzed"索引类型的属性应该工作。但是问题是我事先不知道我的文档结构。我会在不知道表结构的情况下将随机MySQL数据库索引到elasticsearch。
"index" : "not_analyzed"
我如何设置elasticsearch,使其默认情况下会"index" : "not_analyzed"一直使用,除非另有要求。谢谢
PS:如果我可以直接使用任何API,我会使用Java。
我会使用动态模板-它应该可以满足您的需求:
{ "testtemplates" : { "dynamic_templates" : [ { "template1" : { "match" : "*", "match_mapping_type" : "string", "mapping" : { "type" : "string", "index" : "not_analyzed" } } } ] } }
有关此方法的更多信息,请参见:
https://www.elastic.co/guide/zh-CN/elasticsearch/guide/current/custom- dynamic-mapping.html#dynamic- templates
重要提示: 如果有人建议采用这种方法来解决 not_analyzed 问题,那么它将行不通! 关键字 分析器会对数据进行一些分析,然后将数据转换为小写字母。
例如 Data: ElasticSearchRocks ==> Keyword Analyzer: elasticsearchrocks
Data: ElasticSearchRocks ==> Keyword Analyzer: elasticsearchrocks
自己尝试分析查询,看看它正在发生。
curl -XPUT localhost:9200/testindex -d '{ "index" : { "analysis" : { "analyzer" : { "default" : { "type" : "keyword" } } } } }'
http://www.elasticsearch.org/guide/zh- CN/elasticsearch/reference/current/analysis-keyword- analyzer.html