问题标签 [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 回答
51 浏览

regex - 包含“!”的弹性搜索查询 在正则表达式查询中不匹配任何结果

查询下方的弹性搜索不返回任何结果:

1.) {"query":{"regexp":{"field_name":".*f04((?!z).)*"}}

为什么像上面这样的查询没有返回任何结果?

我期待这样的结果: ['f00bar', 'f04bar', 'f04barbuh', 'f04ba']

而下面一个返回:

2.) {"query":{"regexp":{"field_name":".*f04((?!z).)*.*"}}

此返回的结果:['f04bar', 'f04barbuh', 'f04ba', 'f04baz']

我知道第二个查询返回结果是因为 .* 最后,正则'!'表达式有什么问题,应该是别的吗?我们如何使用!作为 regexp 的一部分来指定ba不应该跟z.

0 投票
1 回答
1842 浏览

python - 使用 Elastic search dsl python analyze api

如何在弹性搜索dsl python中使用默认_analyze?

我的查询如下所示:

我在哪里放analyze() method,以便我可以看到我"f04((?!z).)*"是如何被分解的?实际上,它似乎'!'不能用作正则表达式。'!'如果默认分析器无法作为正则表达式字符,我该如何更改分析器?

我是新手,很难准确地将分析方法放入我的代码中。请帮忙。

0 投票
1 回答
821 浏览

regex - 负前瞻正则表达式在 ES dsl 查询中不起作用

我的 Elastic 搜索的映射如下所示:

问题是:

我正在使用 elasticsearch_dsl Q() 形成 ES 查询。当我的查询包含任何复杂的正则表达式时,它在大多数情况下都可以正常工作。但如果它包含正则表达式字符'!',它就完全失败了 在里面。当搜索词包含“!”时,它不会给出任何结果 在里面。

例如:

1.)Q('regexp', field1 = "^[a-z]{3}.b.*")(完美运行)

2.)Q('regexp', field1 = "^f04.*")(完美运行)

3.)Q('regexp', field1 = "f00.*")(完美运行)

4.)Q('regexp', field1 = "f04baz?")(完美运行)

在以下情况下失败:

5.)Q('regexp', field1 = "f04((?!z).)*")(失败,没有结果)

我尝试在字段中添加“分析器”:“关键字”以及“类型”:“关键字”,但在这种情况下没有任何效果。

在浏览器中,我尝试检查分析器:关键字在输入失败的情况下将如何工作:

http://localhost:9210/search/_analyze?analyzer=keyword&text=f04((?!z).) *

结果似乎在这里看起来不错:

我正在运行如下查询:

请帮助,这真的是一个烦人的问题,因为所有正则表达式字符在所有查询中都可以正常工作,除了!。

另外,我如何检查我的映射中当前应用了上述设置的分析器?

0 投票
1 回答
538 浏览

python-3.x - Python ElasticSearch 查询显示多重匹配的误报

尝试使用 ElasticSearch 和 python 在包含研究主题的 csv 数据集上为最终用户创建具有全文搜索功能的可搜索仪表板。

搜索将返回相关 csv 行的行索引。有多个列,即_id, topic

如果我尝试查询数据集以获取"cyber security". 我得到的大部分结果都包含单词"cyber security",或者"cyber-security"返回了其他涉及食品安全和军队安全的行。对于一般搜索词,如何避免这种情况?

此外,搜索词“ cyber”或"cyber security"不会选择包含诸如"cybersecurity"或之类的某些主题"cybernetics"

我将如何编写一个可以捕获这些的条件?请记住,这也需要以另一种方式工作,即如果我搜索"food security"网络主题不应该出现。

编辑:根据评论中的要求添加示例要求

csv 文件可以如下所示。

可接受

搜索词是cyber-> 3,5,7,9,10,11,12
搜索词是security-> 除 11,14,15 之外的所有内容
搜索词是cyber securitycybersecurity-> 3,5,7,9,10,11,12 (在这种情况下,网络需要具有更高的优先级,用户不会对其他安全类型感兴趣)
搜索词是food security->1,2

完美案例
搜索词是cyberor -> cyber security3,4,5,7,9,10,11,12,14cybersecurity

考虑到密码学和生物信息学几乎与网络安全相关,我是否应该使用文档集群来实现这一点(ML 技术)?

0 投票
1 回答
1287 浏览

python - 使用带有布尔数据类型的python在ElasticSearch中添加一个字段?

如何使用 python 在 Elasticsearch 中添加特定数据类型(布尔值)的新字段。这个查询正确吗?

0 投票
1 回答
592 浏览

elasticsearch - 如何在更新 Elasticsearch 时锁定文档?

我在我的 python 代码中使用 elasticsearch-dsl python 库。我试图更新文档,因此为了避免并发竞争条件,我需要获取并释放文档上的锁定。如何使用这个库来做到这一点。我已经浏览了它的文档,但没有找到任何可以做的事情。

0 投票
2 回答
700 浏览

python - elasticsearch-DSL库在保存文档时为文本字段设置默认值

我们如何检查来自 elasticsearch-DSL 库的 Field 对象(例如 Text、Integer、Keyword)是否不包含任何值,比如 None 或空字符串?在这种情况下,我需要在将 Document 保存到 ES 之前,使用某种默认但动态的值设置 Document 对象中的字段。谢谢。

0 投票
2 回答
8896 浏览

python-3.x - Elasticsearch dsl OR 查询形成

我有多个文档的索引。这些文件包含以下字段:

  • 姓名
  • adhar_number
  • pan_number
  • acc_number

我想创建一个 elasticsearch dsl 查询。对于此查询,有两个输入可用,例如 adhar_number 和 pan_number。此查询应与此匹配OR 条件

示例:如果一个文档仅包含提供的 adhar_number,那么我也想要该文档。

我有一本包含以下内容的字典(my_dict):

我尝试如下:

它创建以下查询:

上面的代码为我提供了AND 条件而不是OR Condition的结果。

请向我提出包含 OR 条件的好建议。

0 投票
1 回答
1683 浏览

elasticsearch - elasticsearch_dsl 响应多桶聚合

找到了这个关于如何使用 elasticsearch_dsl 构建嵌套聚合的线程Generate multiple buckets in aggregation

有人可以展示如何遍历响应以获得第二个存储桶结果吗?

不起作用,如何获取 num_servers 或 server_list 中的内容?

0 投票
0 回答
44 浏览

elasticsearch - 如何使用空格和其他字符查询嵌套路径

我有一个相当“复杂”的弹性搜索文档,路径中存在空格。有什么方法可以让查询在没有重新索引的情况下工作?:)

我当前的代码看起来像这样。

但这当然会由于 .Q&A 导致不正确的查询。

我也尝试过使用线程[“Q&A”],但这也不起作用。

理想情况下,我不想重新索引,因为集合非常大。