如何不在ElasticSearch中进行分析



我在ElasticSearch字段中有一个字段,我不想对它进行分析,也就是说,它应该逐字逐句地存储和比较。这些值将包含字母、数字、空白、破折号、斜线以及其他字符。

如果我在这个字段的映射中没有提供分析器,默认情况下仍然使用标记器,它会将我的逐字逐句字符串破解成单词块。我不想那样。

有没有一个超级简单的分析器,基本上不分析?或者,是否有不同的方式表示该字段不应进行分析?

我只创建索引,不做任何其他事情。我可以将类似"english"的分析器用于其他字段,这些字段似乎是预配置分析器的内置名称。有其他名字的名单吗?也许有一个适合我的需求(即不处理输入)。

这是我目前的地图:

{
  "my_type": {
    "properties": {
      "my_field1": { "type": "string", "analyzer": "english" },
      "my_field2": { "type": "string" }
    }
  }
}

my_field1依赖于语言;这似乎奏效了。my_field2应逐字逐句。我想在那里给一个分析仪,它什么都不做。

my_field2的采样值将是"B45c 14/04"

"my_field2": {
    "properties": {
        "title": {
            "type": "string",
            "index": "not_analyzed"
        }
    }
}

在这里检查您,https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-core-types.html,了解更多信息。

由于删除了此处所述的string(由keywordtext替换)类型,因此此情况不再成立。相反,您应该将keyword类型与"index": true | false一起使用。

例如OLD:

{
  "foo": {
    "type" "string",
    "index": "not_analyzed"
  }
}

成为新的:

{
  "foo": {
    "type" "keyword",
    "index": true
  }
}

这意味着该字段被索引,但由于它被类型化为keyword,所以没有被隐式分析。如果要对字段进行分析,则需要使用text类型。

也可以使用

keyword分析仪。

// don't actually use this, use "index": "not_analyzed" instead
{
  "my_type": {
    "properties": {
      "my_field1": { "type": "string", "analyzer": "english" },
      "my_field2": { "type": "string", "analyzer": "keyword" }
    }
  }
}

如前所述:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keyword-analyzer.html,将这些字段标记为not_analyzed更有意义。

keyword分析器在默认情况下为整个索引设置时可能很有用。

更新:正如它在评论中所说,5.X 不再支持string

对于API 8.5,旧的答案不起作用,我意外地找到了解决方案,只需将属性设置为"enabled=false";,查看官方文档,里面有示例https://www.elastic.co/guide/en/elasticsearch/reference/current/enabled.html

相关内容

  • 没有找到相关文章

最新更新