gpt4 book ai didi

Elasticsearch 搜索没有结果,分析器可能是问题所在

转载 作者:行者123 更新时间:2023-12-03 02:00:54 25 4
gpt4 key购买 nike

Elasticsearch 版本: 1.6.0

过去几个月(刚开始)我一直在使用 Elasticsearch ,现在我遇到了问题。以下是有关我的数据库的一些信息:

我使用的索引使用默认的动态映射(例如:我没有修改它的映射)。我的对象应该是无模式的。索引也使用默认分析器(我也没有接触过)所以index/_settings看起来像这样:

{
"default": {
"settings": {
"index": {
"creation_date": "1441808338958",
"uuid": "34Yn1_ixSqOzp9UotOE_4g",
"number_of_replicas": "1",
"number_of_shards": "1",
"version": {
"created": "1060099"
}
}
}
}
}

这是我遇到的问题 :在某些字段值上,搜索无法按预期工作(我得出结论是因为分析器)。示例:字段 email具有值 user@example.com ; {"query":{"bool":{"must":[{"term":{"user.email":"user@example.com"}}]}}不会起作用,但是将术语值作为“用户”起作用(因为它以某种方式对其进行了标记,并且没有带有完整电子邮件地址的标记)。

这就是我想要的 : 我想要两个 通配符 文本搜索(在评论文本中查找坏词)和 严格 在任何字段上搜索(例如在电子邮件中),然后我将使用 boolshouldtermwildcard .

问题是我不能告诉他“好的,在这个领域你应该使用 X 分析器”,因为我所有的领域都是动态的。

我试过的 :在索引的设置上我把这个: {"analysis":{"analyzer":{"default":{"type":"keyword"}}}} ;不起作用:没有任何改变(我也没有忘记在关闭索引之前关闭并打开它)。

这个问题甚至与分析仪有关吗?

最佳答案

此查询不起作用

{"query":{"bool":{"must":[{"term":{"user.email":"user@example.com"}}]}}



术语是完全匹配的,这意味着您对该字段的任何值(“ user@example.com ”在您的情况下)必须匹配任何 代币 ES 有那个领域。

当您没有为该字段分配任何分析器时,ES 将假定您正在为该字段使用标准分析器。当这个 "user@example.com"被索引时,它将被标记为 ("user","example","com")。

要解决您的问题,您必须告诉 ES“not_analyzed”索引映射中的电子邮件字段。

关于Elasticsearch 搜索没有结果,分析器可能是问题所在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com