问题标签 [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.
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 的哪个属性。
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
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
python - 使用弹性搜索查询查找多个精确值
我在弹性搜索中插入了一些如下数据。数据 (name_list) 如下所示。
我正在尝试使用elasticsearch_dsl
python 模块编写弹性搜索查询Q
。
我获取与 name_gr regexp -> gr.* 匹配的名称的简单查询如下所示:
查询以获取 name_gr 为“gr5”的名称如下所示:
现在,我的问题是:如果我想获取所有 name_gr 为“gr1”和“gr2”的名称,我的查询应该是什么?
例如:假设在这种情况下我的 name_gr 正则表达式将如下所示:
现在,我的结果应该包含名称,name1, name2 and name4
因为名称也包含两者gr1 and gr2.
我不知道在这种情况下如何形成查询,我认为我将包含“必须”、“匹配”。但不知道如何形成它。
请帮忙。
PS:
此查询有效,但我的输入可以是正则表达式,例如:我的输入可以是
gr[12],所以我的查询应该是这样的(语法错误,有待修复):
因此,在此查询中,“匹配”部分应在内部解析为 ->
elasticsearch-dsl - 尝试在 elasticsearch-dsl.py 持久性 api 中使用日期时出现异常
我正在尝试使用持久性 API,使用 elasticsearch-dsl 6.2.1 版,如下所示:
当我打电话时,MyClass.init()
我(通过 Kibana)看到映射确实符合我的预期:
我有my_instance
一个变量,它是MyClass
.
my_instance.start
并my_instance.stop
保留像 '15-06-2018 02:54:05:382' 这样的字符串
当我打电话时,my_instance.save()
我得到以下异常:
我究竟做错了什么?
python-2.7 - 使用elasticsearch-dsl在python中获取按“@timestamp”排序的结果
我想从我的 elasticsearch 节点获取我的代码的数据,我正在使用 elasticsearch-dsl 库从 elasticsearch 查询数据。现在我希望根据可以使用sort api完成的“@timestamp”对数据进行排序。但是我得到的数据有超过 10000 个文件。我不能将扫描与排序一起使用来获取大数据,因为排序不适用于 elasticsearch-dsl 中的扫描。有没有办法在 elasticsearch-dsl 中使用滚动 api 或任何其他方式来获得超过10000 个使用 "@timestamp" 排序的文档。
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 都不存在于其中。请帮忙。从现在开始,我就陷入了困境。
谢谢。
elasticsearch - 弹性搜索建议返回零结果
我正在尝试使用elasticsearch_dsl
python 库设置 ElasticSearch。我已经能够设置索引,并且可以使用该.filter()
方法进行搜索,但是我无法使该.suggest
方法起作用。
我正在尝试使用completion
映射类型和suggest
查询方法,因为这将用于自动完成字段(在弹性文档中推荐)。
我是弹性新手,所以我猜我错过了一些东西。任何指导将不胜感激!
到目前为止我做了什么
我没有找到完全符合我要求的教程,但我通读了 ElasticSearch.com 和 elasticsearch_dsl 上的文档,并在此处查看了一些示例 此处
PS:我在 Heroku 上使用 Searchbox Elasticsearch
索引/映射设置:
映射输出:
这是 Web 控制台中显示的映射:
尝试搜索
验证索引是否存在:
测试搜索 - 作品:
失败的部分
我无法让任何.suggest()
方法起作用。注意:* 我正在关注官方图书馆文档
测试建议:
我还尝试了下面的代码,显然有许多不同类型的查询和值,但结果是相似的。(注意.filter()
我总是得到预期的结果)。
更新
根据 Honza 的建议,我将title_suggest
映射更新为仅完成,没有自定义分析器。我还删除了索引并从头开始重新索引
不幸的是,问题仍然存在。这里还有一些测试:
验证title_suggest
是否被正确索引
再次尝试搜索:
验证映射:
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
我想从类似的东西开始
但我有点卡住了,因为我不想要一个指标,只想要每台服务器的最后一条记录。
我怎样才能做到这一点?
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