Alf*_*lfe 44 token analyzer verbatim elasticsearch
我在ElasticSearch字段中有一个字段,我不想分析它,即它应该存储并逐字比较.值将包含字母,数字,空格,短划线,斜线和其他字符.
如果我没有在我的映射中为此字段提供分析器,则默认仍然使用一个标记生成器,它将我的逐字字符串破解成单词块.我不希望这样.
有一个超级简单的分析仪,基本上不分析?或者是否有不同的方式表示不应分析该字段?
我只创建索引,我不做任何其他事情.我可以将"英语"等分析器用于其他字段,这些字段似乎是预配置分析器的内置名称.有其他名字的清单吗?也许有一个符合我的需求(即对输入无动于衷).
这是我目前的映射:
{
"my_type": {
"properties": {
"my_field1": { "type": "string", "analyzer": "english" },
"my_field2": { "type": "string" }
}
}
}
Run Code Online (Sandbox Code Playgroud)
my_field1
是语言依赖的; 这似乎有效. my_field2
应逐字逐句.我想在那里给一个分析器什么都不做.
my_field2
将是一个样本值"B45c 14/04"
.
Sco*_*ice 53
"my_field2": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请在此处查看https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-core-types.html.
van*_*ome 34
这不再是正确的,由于去除string
(通过置换keyword
和``)类型描述这里.相反,你应该使用"index": true | false
.例如OLD:
{
"foo": {
"type" "string",
"index": "not_analyzed"
}
}
Run Code Online (Sandbox Code Playgroud)
变得新:
{
"foo": {
"type" "keyword",
"index": true
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着该字段已编制索引,但因为它是键入的,因此keyword
未进行隐式分析.