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

python-2.7 - update_by_query 与 upsert python elasticsearch

我希望update_by_query使用我的 python elasticsearch 客户端发出请求。我希望使用索引、类型和 NOT 字段进行查询id。基于该字段,我希望更新其他一些字段,但如果该查询未返回任何结果,则应使用上述索引和类型创建一个新文档。

我可以进行搜索然后更新,但我希望只使用一个查询来完成此操作。此外,我想使用弹性搜索客户端helpers.bulk(es, result)在哪里执行多个此类操作,并且是一个 json 列表。Elasticsearch 版本是 5.4esresult

0 投票
1 回答
423 浏览

python - Elasticsearch 多搜索返回错误响应,但单个查询返回正确响应

使用官方 python 客户端在Elasticsearch上运行以下查询会返回错误的响应,但单独运行它们会给出正确的响应。

以下对象作为 search_doc 传递给elasticsearch.msearch()

并返回以下响应:

但是,在 index 上单独运行xyz,查询如下:

返回以下响应:

,这是期望的响应。到目前为止,我无法弄清楚为什么单个请求有效但 multi_search 请求无效。

注意:被搜索的数据是 Elasticsearch 日志数据。

任何帮助表示赞赏。:)

0 投票
1 回答
408 浏览

elasticsearch - _meta field in elasticsearch is not working as it is supposed to be

Here is my mapping:

I expect this to be the response when I do http://localhost:9200/myindex/mytype/_search?pretty:

But instead I get this as the response:

I need to have _meta field outside of _source so that I can disable _source on my queries which will save memory. Can anyone suggest a solution?

Aren't all fields which start with an underscore supposed to be outside of _source ?

Side note: I don't think this is relevant, but I'm doing all this with elasticsearch-py.

0 投票
1 回答
82 浏览

elasticsearch - 使用 bool 而不是 not 的弹性搜索查询

我正在尝试构建一个用于not使用的弹性搜索查询bool,因为not已弃用。例如,匹配所有不属于foo@bar.com.

我使用 elasticsearch-dsl 尝试了这些(按照这篇文章https://www.elastic.co/blog/lost-in-translation-boolean-operations-and-filters-in-the-bool-query):

尽管'author': 'foo@bar.com'存在其他文档,但这不会返回任何结果。

我也试过

这会返回一些文件的组合,有些文件有'author': 'foo@bar.com',有些则没有。

0 投票
1 回答
80 浏览

python - 如何将 curl 转换为 elasticsearch-py 查询格式?

如何编写 elasticsearch-py 查询来查询如下相同的数据?

0 投票
1 回答
606 浏览

python - Elasticsearch 不允许我添加长字典 [TransportError(400)]

我正在使用elasticsearch-py在弹性索引中添加一些字典,我将字典添加到索引和带有列表的字典中,在我的代码中添加了这个字典,但它给了我这样的错误: RequestError: TransportError(400, u'mapper_parsing_exception', u'failed to parse [long_spec]') 搜索后我得到了应该在弹性中添加一些地图,然后我在映射"long_spec":{ "type": "text" }中添加和其他测试"long_spec"{ "type": "string" },但它不起作用。

我在我的 python 中使用它, self.es.index(index="new_index", doc_type='user',body=dict) 我的 dict 是这样的:

{'long_spec': [{'header': u'Design', 'specification': [{u'Device type:': [u'Smart phone']}, {u'OS:': [u'Android (7.0)']}, {u'Form factor:': [u'Candybar']}, {u'Dimensions:': [u'6.06 x 3.03 x 0.35 inches (153.9 x 77 x 8.9 mm)']}, {u'Weight:': [u'6.38 oz (181 g)']}, {u'Features:': [u'Fingerprint (touch), Touch sensitive control keys']}, {u'Keys:': [u'Right: Volume control, Lock/Unlock key']}, {u'Colors:': [u'Black, Gold, Pink']}]}, {'header': u'Display', 'specification': [{u'Physical size:': [u'5.5 inches']}, {u'Resolution:': [u'720 x 1280 pixels']}, {u'\n': [u'267 ppi']}, {u'\n': [u'IPS LCD']}, {u'\n': [u'70.40 %']}, {u'Colors:': [u'16 777 216']}, {u'Touchscreen:': [u'Capacitive, Multi-touch', u'\n']}, {u'Features:': [u'Ambient light sensor, Proximity sensor']}]}, {'header': u'Camera', 'specification': [{u'Camera:': [u'13 megapixels', u'\n', u'LED', u'\n', u'F2.0', u'\n', u'25 mm', u'\n', u'Dual-camera (13-megapixel, 120-degree viewing angle), Autofocus (Phase detection)', u'\n', u'Touch to focus, Face detection, Self-timer, Digital zoom, Geo tagging', u'\n', u'Exposure compensation, ISO control, White balance presets', u'\n', u'Burst mode, High Dynamic Range mode (HDR), Panorama', u'\n']}, {u'Camcorder:': [u'1920x1080 (1080p HD) (30 fps)', u'\n', u'Time-lapse video, Picture-taking during video recording, Digital image stabilization, Video calling, Video sharing', u'\n']}, {u'Front-facing camera:': [u'8 megapixels', u'\n', u'Wide Angle, Flash', u'\n']}]}, {'header': u'Hardware', 'specification': [{u'\n': [u'Qualcomm Snapdragon 430 8937 ']}, {u'\n': [u'Octa-core, 1400 MHz, ARM Cortex-A53, 64-bit, 28 nm']}, {u'\n': [u'Adreno 505', u'\n']}, {u'\n': [u'4 GB RAM (800 MHz) / LPDDR2']}, {u'\n': [u'64 GB']}, {u'\n': [u'microSD, microSDHC, microSDXC up to 256 GB']}]}, {'header': u'Battery', 'specification': [{u'\n': [u'5000 mAh']}, {u'Type:': [u'Not user replaceable']}, {u'Fast Charge:': [u'Yes']}, {u'Talk time (3G):': [u'40.00 hours']}, {u'Stand-by time (4G):': [u'46.0 days (1104 hours)']}, {u'Internet use:': [u'26 hours', u'\n']}, {u'Video playback:': [u'22.00 hours']}]}, {'header': u'Multimedia', 'specification': [{u'Screen mirroring:': [u'Wireless screen share']}, {u'Music player:': [u'Album, Artist, Genre, Playlists', u'\n', u'Album art cover, Background playback', u'\n', u'MP3, AAC, FLAC, WAV, M4A (Apple lossless), AMR, OGG, MIDI', u'\n']}, {u'Video playback:': [u'MPEG4, H.263, H.264', u'\n']}, {u'Radio:': [u'FM', u'\n']}, {u'Speakers:': [u'Earpiece, Loudspeaker']}, {u'Headphones connector:': [u'3.5mm']}]}, {'header': u'Cellular', 'specification': [{u'GSM:': [u'850, 900, 1800, 1900 MHz']}, {u'UMTS:': [u'800, 850, 900, 1700/2100, 1900, 2100 MHz']}, {u'LTE (FDD):': [u'Bands 1, 2, 3, 4, 5, 7, 8, 12, 17, 18, 19, 26, 28']}, {u'LTE (TDD):': [u'Bands 38, 41']}, {u'Data:': [u'LTE Cat 4 (150/50 Mbit/s), HSDPA+ (4G) 42.2 Mbit/s, HSUPA 5.76 Mbit/s']}, {u'2G Data:': [u'EDGE, GPRS']}, {u'Nano SIM:': [u'Yes']}, {u'Multiple SIM cards:': [u'2 slots']}, {u'VoLTE:': [u'Yes']}, {u'Global Roaming:': [u'Yes']}]}, {'header': u'Phone features', 'specification': [{u'Sensors:': [u'Accelerometer, Gyroscope, Compass', u'\n']}, {u'Notifications:': [u'Haptic feedback']}, {u'Phonebook:': [u'Unlimited entries, Caller groups, Multiple numbers per contact, Search by both first and last name, Picture ID, Ring ID']}, {u'Organizer:': [u'Calendar, Alarm, Calculator, World clock, Timer, Stopwatch, Countdown timer']}, {u'Messaging:': [u'SMS, MMS, Threaded view, Predictive text input']}, {u'E-mail:': [u'IMAP, POP3, SMTP, Microsoft Exchange', u'\n']}, {u'Instant Messaging:': [u'Hangouts / Google Talk', u'\n']}, {u'Other features:': [u'Voice dialing, Voice commands, Voice recording']}]}, {'header': u'Connectivity', 'specification': [{u'Bluetooth:': [u'4.1', u'\n', u'Advanced Audio Distribution (A2DP), Audio/Visual Remote Control Profile (AVRCP), Generic Access (GAP), Handsfree (HFP), Headset (HSP), Message Access Profile (MAP), Object Push (OPP), Phone Book Access (PBAP)', u'\n']}, {u'Wi-Fi:': [u'802.11 b, g, n', u'\n', u'Yes', u'\n', u'Yes', u'\n']}, {u'USB:': [u'USB 2.0', u'\n', u'microUSB', u'\n', u'Mass storage device, USB Host, USB charging', u'\n']}, {u'Charging connector:': [u'microUSB']}, {u'\n': [u'GPS, A-GPS, Glonass, BeiDou']}, {u'Navigation:': [u'Turn-by-turn navigation, Voice navigation']}, {u'Other:': [u'VoIP, Tethering, Computer sync, OTA sync']}]}, {'header': u'Availability', 'specification': [{u'Officially announced:': [u'17 Aug 2017']}]}]}

0 投票
1 回答
360 浏览

python-3.x - Elasticsearch-py 批量助手相当于 curl 文件

我希望使用 elasticsearch python 客户端(并且不使用subprocess)复制以下命令:

我试图在没有任何运气的情况下使用批量助手:

这会导致type is missing错误。

该文件在使用时处理得很好curl,看起来有点像这样:

请注意,我宁愿不更改文件的内容,因为我有大约 21000 个具有相同格式的文件。

0 投票
0 回答
258 浏览

python - 完全覆盖_source elasticsearch-py

我正在尝试接收一个 JSON 块,以便它完全覆盖 Elasticsearch 记录。在我看来,如果不存在更新将添加新密钥,或者如果存在则覆盖它们,但它不会删除未包含在更新中的密钥。

我的用户将发送作为旧_source字段的已编辑 JSON,因此最简单的更新方法是删除旧_source的 JSON 并将新的 JSON 用作全新的_source. 我到目前为止:

也未能仅删除一个密钥以查看我是否可以在以下位置执行此操作:

有没有办法用新的 JSON 文档完全覆盖 Elasticsearch 文档?

0 投票
1 回答
260 浏览

elasticsearch - 在弹性搜索索引中重命名文档类型

我使用elasticsearch-py将由 Django 模型表示的数百万条记录从 PostgreSQL 移动到 Elasticsearch。我将模型的名称用于 doctype(在 CamelCase 中)。

然后我切换到Elasticsearch DSL并注意到默认情况下它会创建带有下划线 (snake_case) 的小写名称的文档类型。

我不想doc_type在我的文档元中重新定义,所以我要在 Elasticsearch 中重命名它。最快的方法是什么?

0 投票
2 回答
543 浏览

django - 在 wagtail 中索引自定义 Django 模型字段

我们使用Django MarkupField来存储 Markdown 文本,它工作得很好。

然而,当我们尝试在 Wagtail 中索引这些字段时,我们会从 Elasticsearch 中得到序列化错误,如下所示:

一种解决方法是索引返回的可调用对象,field.raw但我们必须为模型中的每个 Markdown 字段属性编写一个这样的可调用对象。我认为我们可以通过使用方法扩展字段属性(即Markup替换 的 django-markupfield 类MarkupField)来解决此问题,get_searchable_content(value)但序列化错误仍然存​​在。

有人对在 Wagtail + elasticsearch 中索引自定义 Django 字段有任何提示吗?