我有一个带有标准分析器的弹性搜索集群。我知道使用这个分析仪,术语“300”被分析为一种类型。
假设我正在搜索一个具有字段“name”的文档,该字段的值为“纸巾300 CT”,分析为[“Paper”(ALPHANUM)、“tower”(ALPHANUM)、“300”(NUM)、“CT”(ALPHANUM)]
目前,当我使用模糊/通配符查询时,如下所示:
"query":
{
"bool":{
"must":[
{
"bool":{
"should":[
{
"fuzzy":{
"ec_item_name":{
"value":"300CT"
}
}
},
{
"wildcard":{
"ec_item_name":{
"value":"3*0*0*C*T*"
}
}
}
],
"minimum_should_match": 1
}
}
]
}
}
无论模糊性如何调整,模糊查询都不匹配。我希望术语“300CT”与“300”匹配。在“300CT”上匹配“300”也是如此。是否有一个分析器或一种实现自定义分析器的方法,以便对所有术语进行分析以支持这种类型的搜索?我很难找到关于这种行为的文档。
注意模糊查询,它在为搜索创建模糊替代查询词之前不会分析查询文本。关于Elastic博客上的模糊查询,有一篇很好的文章解释了它们所陈述的模糊查询:
一般应避免使用弹性搜索模糊查询类型。
也就是说,我不能复制你的例子,因为当我用模糊性2搜索时,术语300CT匹配300。在Kibana开发工具中尝试以下示例:
PUT fuzzytest
PUT fuzzytest/_doc/1
{
"name": "Paper towel 300 CT"
}
POST fuzzytest/_explain/1
{
"query": {
"fuzzy": {
"name": {
"value": "300CT",
"fuzziness": 2
}
}
}
}
您是否尝试过匹配
查询和模糊性
选项?
我已经试用了标准
分析仪,它对我来说很好:
{
"query": {
"match": {
"name": {
"query": "300CT",
"fuzziness": 2
}
}
}
}
问题内容: 我正在尝试为最终用户提供搜索类型,这更像sqlserver。我能够为给定的SQL场景实现ES查询: 但是ES查询不适用于此sql查询 在我的elasticsearch以及通配符查询中,我还需要执行一些布尔过滤查询 上面的带有通配符搜索的弹性查询可以很好地工作,并让我获得所有与pete匹配且不是xyz和abc类型的文档。但是当我尝试使用以空格分隔的2个独立单词执行通配符时,相同的查询返回
问题内容: 有没有办法让ElasticSearch在分析的字段上识别完全匹配?理想情况下,我想小写,标记化,词干化,甚至对我的文档进行语音化,然后让查询提取“精确”匹配项。 我的意思是,如果我索引“汉堡包”和“汉堡包”,它们将被分析为[“汉堡包”,“小圆面包”]和[“汉堡包”]。如果我搜索“汉堡”,它将仅返回“汉堡”文档,因为这是“完全匹配”。 我尝试使用关键字标记器,但不会阻止各个标记。我是否需
问题内容: 我正在研究Elasticsearch 7.2版,并且正在 改善 应用程序发出的ES调用的性能。 根据我的阅读,如果我们尚未设置“搜索分析器”,则默认情况下将设置标准分析器。 但是,在不需要分析仪的情况下,安装分析仪可能会影响性能。是否将所有字段都用作“关键字”可以防止这种情况? 还是有其他方法可以禁用此“搜索分析器” 附言:对于任何答案,如果您能指出我基于答案的ES官方文档,我将不胜感
问题内容: 使用GAE搜索API是否可以搜索部分匹配项? 我正在尝试创建自动完成功能,其中该术语将是部分单词。例如。 b bui 构建 都将返回“建筑物”。 GAE怎么可能? 问题答案: 尽管全文搜索不支持LIKE语句(部分匹配),但是您可以修改它。 首先,为所有可能的子字符串标记数据字符串(hello = h,he,hel,lo等) 使用标记化的字符串构建索引+文档(搜索API) 执行搜索,然后
我已经完成了名称索引。它包含椅子、椅子等数据。 当我尝试用“cha”搜索时,它不会返回任何椅子。这是返回“毛毯”,我期待的文件有椅子。 下面是我的代码: 搜索请求: 搜索响应: } 映射: 我该怎么解决这个问题? 谢谢,Sri
我的目标是搜索一个词,而不管添加了什么分析器。 我使用了匹配查询与关键字分析器,但我认为它可以与添加到该属性中的默认分析器一起工作。 在弹性搜索中,我的作者文档结构如下所示