我将关键字分析器作为默认分析器,如下所示:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"default": {
"type": "keyword"
}}}}}}
```
但现在我无法搜索任何内容。 e.g:
{
"query": {
"query_string": {
"query": "cast"
}}}
给我0结果尽管"演员"是索引文档的常见值。 (http://gist.github.com/baelter/b0720a52ee5a27e27d3a)
搜索" *"工作得很好btw。
我的映射中只有显式默认值:
{
"oceanography_point": {
"_all" : {
"enabled" : true
},
"properties" : {}
}
}
索引的行为就好像_all中没有包含任何字段一样,因为field:value查询工作正常。
我是否滥用了关键字分析器?
答案 0 :(得分:1)
使用关键字分析器,您只能进行精确的字符串匹配。 让我们假设您使用了关键字分析器而没有过滤器。 在那种情况下,作为字符串索引为"扔掉森林" ,既没有搜索"演员"或者"离开"将工作。你需要做一个准确的"扔掉森林"字符串来匹配它。 (假设没有使用小写过滤器,你也需要给出正确的案例)
更好的方法是使用multi fields声明一个副本作为关键字分析,另一个正常。 您可以搜索其中一个字段并在另一个字段上进行汇总。
答案 1 :(得分:1)
Okey,大约15小时的反复试验我可以得出结论,这适用于搜索:
{
"settings": {
"index": {
"analysis": {
"tokenizer": {
"default": {
"type": "keyword"
}}}}}}
这怎么会破坏分面,所以我最终使用动态模板:
"dynamic_templates" : [
{
"strings_not_analyzed" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
],