问题标签 [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.
elasticsearch - Elastica 映射 include_type_name
我正在尝试从 Elastica 创建映射。
这是我使用映射参数创建索引的代码:
但我遇到以下错误:
我找不到如何在 Ruflin/Elastica 中传递“include_type_name = true”。
我所有的搜索都返回 CURL 中的示例..
非常感谢帮助我
python - Elasticsearch“未能找到分析器”错误和分析器未由设置 API 显示
我试图让我的 Elasticsearch 索引使用 Porter 词干算法,但是当我使用_analyze
端点进行测试时,我的自定义分析器没有定义。
我查看了关于 SO 的 ES 文档和类似问题,但我不确定问题是什么。我尝试在创建索引时对设置使用单独的 PUT 请求,但这没有效果。
这就是我创建映射的方式:
这是从映射创建索引的函数。
如果我查询设置,这就是我得到的全部:
我只需要这两个字段来使用porter_stem
令牌过滤器。
elasticsearch - 尝试在 Elasticsearch 中设置 max_gram 和 min_gram
我试图在 Ubuntu 16.04 EC2 服务器上部署 Ruby on Rails 应用程序,但在 Elasticsearch 上给出了关于 max_gram 和 min_gram 之间差异的错误,我对 Elasticsearch 没有任何经验,所以我完全迷失在这里,我需要一些指导这样做并学习如何设置它以避免将来出现此问题。
我第一次进行部署时出现拒绝连接到 localhost:9200 的错误,因此我必须检查服务是否正在运行,甚至检查防火墙,最后我必须进行全新安装并在 elasticsearch 上配置所有内容。 yml 现在正在运行和工作,但是当我尝试再次部署时出现错误,在互联网上进行了大量搜索,有很多文档,但我仍然不知道在哪里设置这些值。
这是我在日志上遇到的错误:
elasticsearch 上没有索引文件,默认模板上没有关于此设置的任何内容
elasticsearch - 无法使用分析器在复合查询中进行搜索
我有一个问题索引,它有多个字段,例如标签(逗号分隔的标签字符串)、作者、测试者。我正在创建一个全局搜索,可以同时通过所有这些字段搜索问题。我正在使用布尔查询,例如
如果没有分析器,我可以得到结果,但它使用空格作为分隔符,例如 python 3 被搜索为 python 或 3。
但我想将 Python 3 作为单个查询进行搜索。因此,我为标签创建了一个分析器,以便每个逗号分隔的标签都被视为一个标签,而不是标准空格。
但现在我没有得到任何结果。请让我知道我在这里缺少什么。我无法在文档中找到在复合查询中使用分析器:https ://www.elastic.co/guide/en/elasticsearch/reference/current/compound-queries.html
添加示例:
{
结果应该与所有字段匹配,但对于标签字段应该有标签的联合,并且查询应该用逗号分隔,而不是用空格。即查询应匹配test和abc 4,但高于搜索 test、abc 和 4 的查询。
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 标记器,我想我可以搜索所有已定义的正则表达式规则。但这合理吗?项目必须处理大量数据而没有任何性能问题。(将索引一个公司的整个文件系统)。对于此类数据发现问题,您还有其他建议吗?我目前的主要目的是寻找信用卡。感谢您的帮助。
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
elasticsearch - 在 Elasticsearch 上按字母顺序对关键字字段进行排序
在对keyword
类型字段应用排序时,它会按字典顺序排列并针对给定的数据:
排序后变为:
预期:是否可以根据字母顺序进行排序?
请不要这样,我已经尝试了lowercase
过滤选项并得到以下结果,这不是我的要求:
elasticsearch - Elasticsearch 在双引号之外标记化
我有弹性搜索,其映射创建如下。
我想要做的是在遇到 : 字符时创建一个新令牌并将其从数据中删除。但我只想在它在双引号(“)之外时这样做。有没有办法完成它?
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 中使用的分隔符标记器中取出一个字符?