问题标签 [elasticsearch-dsl-py]

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 投票
0 回答
215 浏览

python - 通过ply(python库)解析表达式后形成弹性搜索查询

我已经使用 python PLY 库编写了一个解析器。

弹性搜索映射架构如下所示:

解析器如下所示:

输入查询示例:

我的解析器工作得很好,但我不确定在解析后我应该如何形成 es 查询。例如:

如果我的输入是func1(foo) UNION func2(bar)

func1(foo)将被函数解析为{'regexp': {'prop1': 'foo'}} func2(bar)将被函数解析为{'regexp': {'prop1': 'bar'}}

现在,它会起作用p_expr_op_expr,因为它包含运算符 UNION,那么我如何在这里编写最终的 union es 查询?

请建议或指出一些示例,它们在通过 ply 解析后形成 es 查询,或者解析这些表达式并形成 es 查询的最佳方法是什么?

这里,表达式中的 func1、func2 有助于决定引用 es schema 的哪个属性。

0 投票
1 回答
1686 浏览

django - 证书验证缺少根证书。使用 ca_certs 参数传递它们或安装 certifi 以自动使用它

django-elasticsearch-dsl在我们的一个项目中使用,在 AWS Elasticsearch 中创建集群后,我开始看到此错误:Root certificates are missing for certificate validation. Either pass them in using the ca_certs parameter or install certifi to use it automatically.. 在此链接 [link][1]中提出了一些解决方案来解决该问题https://elasticsearch-py.readthedocs.io,但这不适用于django-elasticsearch-dsl使用elasticsearch-py. 我只能通过settings.py这样的方式设置端点:

如何添加/启用此证书django-elasticsearch-dsl

0 投票
1 回答
630 浏览

elasticsearch - 在 Mirage 上连接 localhost 弹性搜索集群

我正在尝试使用 Mirage 来构建我的弹性搜索查询。我已经开始在本地主机上进行弹性搜索,当我curl localhost:9210在终端上进行时,我得到以下详细信息:

所以,我试图在 mirage 上连接这个弹性搜索集群来构建某些弹性搜索查询。

我使用什么 appname 和弹性搜索集群在 mirage 上连接它?

我试图将http://localhost:9210/放在 URL 部分,但它不起作用?appname 应该是什么:是“RN48HFb”吗?

请帮助我是新手。

我已经为 Mirage 安装了 chrome 扩展,并且 mirage 的 URL 是:

https://github.com/appbaseio/mirage

chrome-extension://dcnlpfmnpoggchflmdnkgiepijgljoka/site/index.html

0 投票
1 回答
449 浏览

python - 使用弹性搜索查询查找多个精确值

我在弹性搜索中插入了一些如下数据。数据 (name_list) 如下所示。

我正在尝试使用elasticsearch_dslpython 模块编写弹性搜索查询Q

我获取与 name_gr regexp -> gr.* 匹配的名称的简单查询如下所示:

查询以获取 name_gr 为“gr5”的名称如下所示:

现在,我的问题是:如果我想获取所有 name_gr 为“gr1”和“gr2”的名称,我的查询应该是什么?

例如:假设在这种情况下我的 name_gr 正则表达式将如下所示:

现在,我的结果应该包含名称,name1, name2 and name4因为名称也包含两者gr1 and gr2.

我不知道在这种情况下如何形成查询,我认为我将包含“必须”、“匹配”。但不知道如何形成它。

请帮忙。

PS:

此查询有效,但我的输入可以是正则表达式,例如:我的输入可以是

gr[12],所以我的查询应该是这样的(语法错误,有待修复):

因此,在此查询中,“匹配”部分应在内部解析为 ->

0 投票
1 回答
669 浏览

elasticsearch-dsl - 尝试在 elasticsearch-dsl.py 持久性 api 中使用日期时出现异常

我正在尝试使用持久性 API,使用 elasticsearch-dsl 6.2.1 版,如下所示:

当我打电话时,MyClass.init() 我(通过 Kibana)看到映射确实符合我的预期:

我有my_instance一个变量,它是MyClass. my_instance.startmy_instance.stop保留像 '15-06-2018 02:54:05:382' 这样的字符串

当我打电话时,my_instance.save()我得到以下异常:

我究竟做错了什么?

0 投票
1 回答
1192 浏览

python-2.7 - 使用elasticsearch-dsl在python中获取按“@timestamp”排序的结果

我想从我的 elasticsearch 节点获取我的代码的数据,我正在使用 elasticsearch-dsl 库从 elasticsearch 查询数据。现在我希望根据可以使用sort api完成的“@timestamp”对数据进行排序。但是我得到的数据有超过 10000 个文件。我不能将扫描与排序一起使用来获取大数据,因为排序不适用于 elasticsearch-dsl 中的扫描。有没有办法在 elasticsearch-dsl 中使用滚动 api 或任何其他方式来获得超过10000 个使用 "@timestamp" 排序的文档

0 投票
1 回答
395 浏览

python - 弹性搜索查询从 regexp 输入参数中查找列表中值的完全匹配

我的数据如下所示:

现在,我正在尝试elasticsearch_dsl通过从 python 模块导入来编写弹性搜索查询Q

我的输入查询将regex"name_gr". 例如:"name_gr": "gr[12]". 因此,在这种情况下,我想要在“name_gr”列表中同时包含“gr1”和“gr2”的所有名称。

所以,结果为 ->

示例 1:"name_gr": "gr[12]"将是:

因为 gr1 和 gr2 都存在于 name1、name2 和 name4 中。

示例 2:"name_gr": "gr.*"将是:

因为,所有的 gr (gr1,gr2,gr3,gr4) 只存在于 name4 中。

我尝试编写如下查询:

但它在结果中也给出了 name3,这是无效的,因为 gr1 和 gr2 都不存在于其中。请帮忙。从现在开始,我就陷入了困境。

谢谢。

0 投票
2 回答
1076 浏览

elasticsearch - 弹性搜索建议返回零结果

我正在尝试使用elasticsearch_dslpython 库设置 ElasticSearch。我已经能够设置索引,并且可以使用该.filter()方法进行搜索,但是我无法使该.suggest方法起作用。

我正在尝试使用completion映射类型和suggest查询方法,因为这将用于自动完成字段(在弹性文档中推荐)。

我是弹性新手,所以我猜我错过了一些东西。任何指导将不胜感激!

到目前为止我做了什么

我没有找到完全符合我要求的教程,但我通读了 ElasticSearch.com 和 elasticsearch_dsl 上的文档并在此处查看了一些示例 此处

PS:我在 Heroku 上使用 Searchbox Elasticsearch

索引/映射设置:

映射输出:

这是 Web 控制台中显示的映射:

尝试搜索

验证索引是否存在:

测试搜索 - 作品:

失败的部分

我无法让任何.suggest()方法起作用。注意:* 我正在关注官方图书馆文档

测试建议:

我还尝试了下面的代码,显然有许多不同类型的查询和值,但结果是相似的。(注意.filter()我总是得到预期的结果)。


更新

根据 Honza 的建议,我将title_suggest映射更新为仅完成,没有自定义分析器。我还删除了索引并从头开始重新索引

不幸的是,问题仍然存在。这里还有一些测试:

验证title_suggest是否被正确索引

再次尝试搜索:

验证映射:

0 投票
1 回答
48 浏览

python - 在elasticsearch_dsl中按特定属性分组时如何检索最后一个日志?

需要使用 python elasticsearch_dsl 获取每个服务器的最后一个日志(基于时间戳)

例如这里是日志:

服务器小时 CPU%


服务器1 8AM 19 服务器1 9AM 19服务器1 10AM
29
服务器2 8AM 19服务器2
9AM 13服务器2
10AM 21
服务器3 8AM 1服务器3
9AM 11
服务器3 10AM 2

我要提取的内容:

服务器 1 上午10 点 29
服务器 2 上午 10 点 21
服务器 3 上午 10 点 2

我想从类似的东西开始

但我有点卡住了,因为我不想要一个指标,只想要每台服务器的最后一条记录。

我怎样才能做到这一点?

0 投票
2 回答
57 浏览

python - 根据列表大小(即否)生成弹性搜索和查询。查询中的 AND 将基于否。列表中的项目

我有一个列表,其大小不固定,可以包含任何编号。的项目。

根据列表中的项目数,我必须生成一个弹性搜索 AND 查询来查找值的完全匹配。

例如:

如果我的列表包含 2 项:['a', 'b'],我的弹性搜索查询应如下所示:

同样,如果我的列表包含 4 个项目:['a', 'b','c','d'];我的查询将如下所示:

根据列表大小生成这种查询的正确方法是什么?

PS:我正在使用elasticsearch_dsl模块的Q库来生成弹性搜索查询。

https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html