问题标签 [elasticsearch-analyzers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1724 浏览

elasticsearch - Elastica 映射 include_type_name

我正在尝试从 Elastica 创建映射。

这是我使用映射参数创建索引的代码:

但我遇到以下错误:

我找不到如何在 Ruflin/Elastica 中传递“include_type_name = true”。

我所有的搜索都返回 CURL 中的示例..

非常感谢帮助我

0 投票
2 回答
320 浏览

python - Elasticsearch“未能找到分析器”错误和分析器未由设置 API 显示

我试图让我的 Elasticsearch 索引使用 Porter 词干算法,但是当我使用_analyze端点进行测试时,我的自定义分析器没有定义。

我查看了关于 SO 的 ES 文档和类似问题,但我不确定问题是什么。我尝试在创建索引时对设置使用单独的 PUT 请求,但这没有效果。

这就是我创建映射的方式:

这是从映射创建索引的函数。

如果我查询设置,这就是我得到的全部:

我只需要这两个字段来使用porter_stem令牌过滤器。

0 投票
2 回答
8711 浏览

elasticsearch - 尝试在 Elasticsearch 中设置 max_gram 和 min_gram

我试图在 Ubuntu 16.04 EC2 服务器上部署 Ruby on Rails 应用程序,但在 Elasticsearch 上给出了关于 max_gram 和 min_gram 之间差异的错误,我对 Elasticsearch 没有任何经验,所以我完全迷失在这里,我需要一些指导这样做并学习如何设置它以避免将来出现此问题。

我第一次进行部署时出现拒绝连接到 localhost:9200 的错误,因此我必须检查服务是否正在运行,甚至检查防火墙,最后我必须进行全新安装并在 elasticsearch 上配置所有内容。 yml 现在正在运行和工作,但是当我尝试再次部署时出现错误,在互联网上进行了大量搜索,有很多文档,但我仍然不知道在哪里设置这些值。

这是我在日志上遇到的错误:

elasticsearch 上没有索引文件,默认模板上没有关于此设置的任何内容

0 投票
1 回答
82 浏览

elasticsearch - 无法使用分析器在复合查询中进行搜索

我有一个问题索引,它有多个字段,例如标签(逗号分隔的标签字符串)、作者、测试者。我正在创建一个全局搜索,可以同时通过所有这些字段搜索问题。我正在使用布尔查询,例如

如果没有分析器,我可以得到结果,但它使用空格作为分隔符,例如 python 3 被搜索为 python 或 3。

但我想将 Python 3 作为单个查询进行搜索。因此,我为标签创建了一个分析器,以便每个逗号分隔的标签都被视为一个标签,而不是标准空格。

但现在我没有得到任何结果。请让我知道我在这里缺少什么。我无法在文档中找到在复合查询中使用分析器:https ://www.elastic.co/guide/en/elasticsearch/reference/current/compound-queries.html

添加示例:

{

结果应该与所有字段匹配,但对于标签字段应该有标签的联合,并且查询应该用逗号分隔,而不是用空格。即查询应匹配testabc 4,但高于搜索 test、abc 和 4 的查询。

0 投票
1 回答
510 浏览

elasticsearch - 用于动态定义的正则表达式搜索的 Elastic Search Analyzer

目前,我们在弹性搜索索引中有大量文档并进行全文搜索。我在项目中的下一个要求是查找文档中的所有信用卡数据。用户将来也可以动态定义一些正则表达式搜索规则。但使用标准分析器无法搜索信用卡信息或任何用户定义的规则。例如,假设一个文档包含信用卡信息,例如 4321-4321-4321-4321 或 4321 4321 4321 4321。弹性搜索将此数据索引为 4 个部分,如下所示:

我现在只是不考虑 Luhm 算法。如果我使用 reg exp "([0-9]{4}[- ]){3}[0-9]{4}" 进行基本正则表达式搜索以查找信用卡,则它不会返回任何内容,因为未分析数据并为此编制索引。我想为此目的,我需要为正则表达式搜索定义一个自定义分析器,并将另一个版本的数据存储在另一个字段或索引中。但正如我之前所说,将来用户将定义他/她自己的自定义规则模式进行搜索。我应该如何定义自定义分析器?我应该为此定义 ngram tokenizer(min:2, max:20) 吗?使用 ngram 标记器,我想我可以搜索所有已定义的正则表达式规则。但这合理吗?项目必须处理大量数据而没有任何性能问题。(将索引一个公司的整个文件系统)。对于此类数据发现问题,您还有其他建议吗?我目前的主要目的是寻找信用卡。感谢您的帮助。

0 投票
2 回答
60 浏览

elasticsearch - How to exclude asterisks while searching with analyzer

I need to search by an array of values, and each value can be either simple text or text with askterisks(*). For example:

["MYULTRATEXT"]

And I have the next index(i have a really big index, so I will simplify it):

And all data in the index is stored with asterisks * e.g.:

I need to return exact the same name value when I search by this string MYULTRATEXT

It Should return MY*ULTRA*TEXT, but it does not work, so can't find a workaround. Any thoughts?

I tried pattern_replace but seems like I am doing something wrong or I am missing something here.

So I need to replace all * to empty `` while searching

0 投票
0 回答
30 浏览

elasticsearch - 在 Elasticsearch 上按字母顺序对关键字字段进行排序

在对keyword类型字段应用排序时,它会按字典顺序排列并针对给定的数据:

排序后变为:

预期:是否可以根据字母顺序进行排序?

请不要这样,我已经尝试了lowercase过滤选项并得到以下结果,这不是我的要求:

0 投票
0 回答
171 浏览

elasticsearch - 使用 shingle 的 Elasticsearch 建议

有没有办法做得更好?

这个想法是建议像亚马逊搜索框建议那样的词(搜索时输入)。

搜索即键入示例图像

我有一个可行的解决方案,但我认为有更好的解决方案。

设置

分析仪

映射

文件

和搜索

结果

我不认为这是最好的解决方案。有没有办法优化这个?

0 投票
1 回答
194 浏览

elasticsearch - Elasticsearch 在双引号之外标记化

我有弹性搜索,其映射创建如下。

我想要做的是在遇到 : 字符时创建一个新令牌并将其从数据中删除。但我只想在它在双引号(“)之外时这样做。有没有办法完成它?

0 投票
1 回答
165 浏览

elasticsearch - 如何从弹性搜索标记器中删除一个分隔符?

我正在使用 elasticsearch 6.8 进行文本搜索。我意识到弹性搜索标记器通过使用此处列出的分隔符​​将文本分解为单词:http: //unicode.org/reports/tr29/#Default_Word_Boundaries。我match_phase用来搜索文档中的一个字段,我想删除标记器使用的一个分隔符。

我进行了一些搜索并找到了一些解决方案,例如使用keyword而不是text. 这个解决方案会对我的搜索功能产生很大的影响,因为它不支持部分查询。

另一种解决方案是使用keyword查询但使用通配符来支持部分查询。但这可能会影响查询的性能。而且,我仍然喜欢将标记器用于其他分隔符。

第三个选项是用于tokenize_on_chars定义用于标记文本的所有字符。但这需要我列出所有其他分隔符。所以我正在寻找类似的东西tokenize_except_chars

那么有没有一种简单的方法可以让我从 Elasticsearch6.8 中使用的分隔符标记器中取出一个字符?