问题标签 [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 投票
1 回答
2810 浏览

python - Python elasticsearch-dsl动态查询

我是弹性搜索的新手,我正在使用elasticsearch-dsl库在 python 中实现它。

我坚持动态创建查询。

例如,我可以简单地直接做这样的事情,

但是我怎样才能动态地进行这样的查询呢?

我试过这样的事情:

但是当我执行搜索时:

它在执行搜索时出错,

我想知道这个查询生成有什么问题,还有更合适的方法吗?

PS如果我这样做,它会生成正确的JSON s.to_dict(),如下所示:

0 投票
1 回答
1795 浏览

elasticsearch - 嵌套 JSON 数据上的 Elasticsearch 聚合

我必须对 json 数据进行一些聚合。我在 stackoverflow 上看到了多个答案,但对我没有任何帮助。我有多行,在 timeCountry 列中我有一个存储 JSON 对象的数组。键计数,国家名称,s_name。

我必须根据 s_name 找到所有行的总和,示例 - 如果在第一行 timeCountry 包含如下所示的数组

第2行数据如下

像这样。

我需要如下结果

以上数据仅适用于一行我有多行 timeCountry 是列

我尝试为聚合编写的内容

但它不起作用请帮助

0 投票
1 回答
1068 浏览

elasticsearch - 使用 Python DSL Elasticsearch UpdateByQuery 单独更新大量文档

我正在尝试使用 UpdateByQuery 来更新大量文档的属性。但是由于每个文档都会有不同的值,所以我需要一个一个地执行 ir。我正在遍历大量文档,对于每个文档,我都调用了这个函数:

一些示例值是:

  • 查询= {'查询':{'匹配':{'_id':'VpKI1msBNuDimFsyxxm4'}}}
  • script_source = 'ctx._source.refs = [\'python\', \'java\']'

问题是,当我这样做时,我收到一个错误:“内部动态脚本编译过多,最大:[75/5m];请使用索引或带参数的脚本;此限制可以通过 [script. max_compilations_rate] 设置”。

如果我使用 Kibana 更改 max_compilations_rate,它没有效果:

无论如何,最好使用参数化脚本。我试过了:

def update_references(self, query, script_source, script_params):

所以,这一次:

  • script_source = 'ctx._source.refs = params.value'
  • script_params = {'value': [\'python\', \'java\']}

但是由于我每次都必须更新查询和参数,所以我需要为大集合中的每个文档创建一个新的 UpdateByQuery 实例,结果是同样的错误。

我还尝试使用以下方法遍历和更新大型集合:

但我收到以下错误:“无法建立新连接:[Errno 99] 无法分配请求的地址 juil。10 18:07:14 bib gunicorn[20891]: POST http://localhost:9200/papers/纸/OZKI1msBNuDimFsy0SM9/_update [状态:N/A 请求:0.005s”

因此,如果您对如何解决此问题有任何想法,我们将不胜感激。最好的,

0 投票
2 回答
294 浏览

python - 在使用带有 elasticsearch-py 的查询匹配时自定义分析器有什么建议吗?

将查询匹配与 elasticsearch-py 一起使用时,我无法应用自定义分析器。

我定制了一个名为custom_lowercase_stemmed并用于es.indices.put_settings更新索引设置的分析器。

但是,当我进行搜索时,它找不到分析器。

我还查看了 in 中的参数analyzeres.search但它返回错误:

..无法识别的参数:[分析器]

关于定制分析仪,我可以在这里得到任何建议吗?谢谢!

这是完整的错误:

0 投票
1 回答
3871 浏览

django - RequestError(400, u'action_request_validation_exception', u'Validation Failed: 1: type is missing;

我正在关注https://github.com/sabricot/django-elasticsearch-dsl来索引我的 django-model 中的数据。我已将我的documents.py 文件定义为:->

当我运行命令时 python manage.py search_index --rebuild。我收到标题中提到的错误。任何帮助,将不胜感激。

0 投票
1 回答
415 浏览

elasticsearch - 聚合的扫描结果

我想看看一个用户为每个用户发布了多少个唯一链接。这是我到目前为止提出的

s.aggs.bucket('user_term', A('terms', field='user__id')).metric('url_count', A('value_count', field='link'))

但是,我还没有找到一种方法来遍历该结果。有办法吗?

0 投票
1 回答
353 浏览

python - python 中的 elasticsearch-dsl 库在使用 search.from_dict() 方法从字典语法构造查询时给出双重结果

请在我的 iPython shell 语句下面找到:

我的基本要求是在 django 项目中使用高级库 elasticsearch-dsl-py 基于多个输入和过滤条件构建查询。

为了易于解释和易于构建代码,我将查询组成为字典(json)样式,就像基本的 elasticsearch 查询一样,然后我利用 elasticsearch_dsl 库中的“from_dict(dictionary_object)”方法并调用 count() 和 execute( ) 关于我的目的的结果。

上面显示的是一个较小的示例,但问题很明显。当我使用高级语法时,使用 from_dict 得到双倍的结果(上面的答案 42 是正确的),谁能解释为什么会这样?

0 投票
1 回答
2407 浏览

python - 尝试使用 elasticsearch-dsl Python 包访问 Elasticsearch Cloud 时出现“无法建立新连接”

我正在试验 Elasticsearch 并使用elasticsearch-dslPython 包索引一些 Django 数据。

我创建了一个相对基本的测试,search.py但是当我尝试索引任何数据时收到连接错误。

当我运行时,bulk_indexing()我收到以下错误:

elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x1282266d8>: Failed to establish a new connection: [Errno 61] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x1282266d8>: Failed to establish a new connection: [Errno 61] Connection refused)

我怀疑语法错误或在创建连接时丢失了一些凭据,但我找不到任何进一步的信息。

我正在使用使用 Elastic Cloud 部署的 Elasticsearch v7.4.0。当我通过浏览器访问 URL 时,我可以连接。

0 投票
2 回答
4688 浏览

python - 使用 elasticsearch-dsl-py 查询时间戳范围

我有一个 elasticsearch 范围查询,我想将其转换为elasticsearch-dsl

弹性搜索 Python API

Elasticsearch-DSL-Py 查询?

0 投票
1 回答
1952 浏览

python - 使用 elasticsearch 遍历查询的所有结果

我正在使用 Python 中的 Elasticsearch DSL。我的目标是使用elasticsearch-dsl-py尽可能轻松地在循环中处理 Elasticsearch 响应数据。

当我执行此操作时,我得到以下值:

但是,当我尝试遍历所有结果时,它似乎只打印出 10 个命中:

如果我想使用此输出数据并执行诸如循环结果并将信息存储在字典中之类的操作,我怎样才能尽可能轻松地实现elasticsearch-dsl-py