我们在应用程序中使用弹性分析器配置了elasticsearch。这些单词在空白处被标记,因此名称如 _<fantastic> project
_被索引为
["<fantastic>", "project"]
并且 ABC-123-def项目 的索引为
["ABC-123-def", "project"]
然后,当我们搜索ABC- *时,预期的项目就会出现。但是,如果我们专门搜索<fantastic>
它根本不会出现。好像Lucene / Elastic
Search会忽略任何包含尖括号的搜索词。但是,即使单词未与尖括号分开索引,我们 也可以
搜索fantastic
,或<*fantastic*
或*fantastic*
,它将很好。
标准分析器标记任何非字母数字字符。 _<fantatsic>
_项目被索引为
["fantastic", "project"]
并且 ABC-123-def 项目的索引为
["ABC", "123", "def", "project"]
这会破坏使用进行成功搜索的能力ABC-123-*
。但是,我们使用标准分析仪得到的是有人可以专门搜索<fantastic>
并返回所需的结果。
如果不是一个标准的分析器我们一个char_filter添加到空白分析仪,过滤出在标签上的角撑架,(替换<(.*)>
用$1
),它会被因而索引:
_<fantatsic> project
_被索引为
["fantastic", "project"]
(无尖括号)。和 ABC-123的高清项目 的索引为
["ABC-123-def", "project"]
它看起来很有希望,但是最终得到的结果与普通空白分析器的结果相同:当专门搜索时<fantastic>
,虽然什么也没得到,但是*fantastic*
效果很好。
堆栈溢出的任何人都可以解释这种怪异吗?
您可以为特殊字符创建令牌生成器,请参见以下示例
{
"settings" : {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 1
},
"analysis" : {
"filter" : {
"custom_filter" : {
"type" : "word_delimiter",
"type_table": ["> => ALPHA", "< => ALPHA"]
}
},
"analyzer" : {
"custom_analyzer" : {
"type" : "custom",
"tokenizer" : "whitespace",
"filter" : ["lowercase", "custom_filter"]
}
}
}
},
"mappings" : {
"my_type" : {
"properties" : {
"msg" : {
"type" : "string",
"analyzer" : "custom_analyzer"
}
}
}
}
}
< >作为ALPHA字符,导致基础的word_delimiter将它们视为字母字符。
问题内容: 我想寻求帮助。我想在标题和内容中搜索一个单词。这是结构 查询字符串看起来像这样,在这里我想在“ 15-game”之类的文本中搜索“ 15-g”: 如果我重复这个问题,请接受我的道歉,但我无法查明发生了什么,以及为什么它不返回任何结果。 但是我无法与我合作。 真正有趣的是,如果我搜索“ 15-g”(15个 空格 - 空格 g),它将返回结果。 提前非常感谢您! 问题答案: 也向您添加一个
问题内容: 弹性搜寻1.6 我想索引包含连字符的文本,例如U-12,U-17,WU-12,T恤…,并能够使用“简单查询字符串”查询来搜索它们。 数据样本(简体): 所以我去了这个映射: 使用以下查询进行搜索: 什么有效: “ U-12”,“ U ”,“ t ”,“ ts *” 什么不起作用: “ U-”,“ u-1 ”,“ t-”,“ t-sh ”,… 看来char过滤器未在搜索字符串上执行?我该
我想请你帮忙。我想搜索一个词里面的标题和内容。下面是结构 查询字符串如下所示,我希望在类似“15-game”的文本中搜索“15-g”: 请接受我的道歉,如果我重复的问题,但我无法找到发生了什么,为什么它没有返回任何结果。 我已经看过了: 提前谢谢你!
问题内容: 我有一个带有“标签”索引的elasticsearch v2.x集群,其中包含大约5000个标签:。给定一个字符串,是否可以查询标签索引以获取在该字符串中找到的所有标签?我不仅要精确匹配,而且还希望能够控制模糊匹配而不过于慷慨。太过慷慨了,只有在标签中的所有标记都位于一定距离内(例如5个单词)时,标签才应该匹配。 例如,给定字符串: 以下标记应匹配: 但不是 问题答案: 我认为不可能创建
问题内容: 我有一个产品目录,正在使用Elastica客户端在ElasticSearch中建立索引。我是ElasticSearch BTW的新手。 我的目录中有一些名称相同的产品。但是,如果输入,它们将不会出现在搜索结果中。 我该怎么办才能弹出结果? 我已经按照本教程进行了学习,并为索引实现了以下内容: 问题答案: 您可以尝试使用映射字符过滤器删除连字符: http://www.elasticse
我目前正在学习一些关于elasticsearch的知识,现在我试图从searchResponse中获取特定的字段,我使用以下代码: 所以我想问的是我如何从所有这些数据中获得特定的字段,我的数据库由ElasticSearch文档中的Shakespeare.json aviable组成,并且是这样形成的 这些是我使用的参数,以防有人感兴趣 这就是在浏览器中看到响应的方式,任何答案或提示或任何东西都被很