问题标签 [elasticsearch-php]

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 回答
16 浏览

elasticsearch - 如何通过 Elasticsearch-PHP 连接 tls es 堆栈

根据官方Doc,推出了一个es栈: https ://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-docker.html

弹性码头-tls.yml:

创建-certs.yml:

我使用 Elasticsearch-PHP 在同一台服务器上连接 es stack、codes 和 es stack:

我得到:

并且没有登录docker-compose,如何通过Elasticsearch-PHP连接tls es stack?

0 投票
1 回答
43 浏览

php - 在 Elasticsearch 查询中组合 OR、AND 和 IN 运算符

我对弹性搜索很陌生,我需要准备结合 OR、AND 和 IN 运算符的查询。我想要实现的是在 SQL 中有这样的东西:

SELECT * FROM tableWHERE (field_1 = 'foo' AND field_2 IN(1,2,3) ) OR ('field_1 = 'bar' AND field_2 IN(2, 3, 4) );

我在 PHP 中使用 elastic 并从以下内容开始:

但是,我无法添加查询参数来获得我想要的结果。你能帮我吗?

0 投票
0 回答
28 浏览

elasticsearch - 在 Elasticsearch 7 中计算单个文档中文本字段中每个单词的频率

是否有一种有效且相对便宜的方法来使用 Elasticsearch 计算单个文档中每个单词的出现次数(包括停用词)?单词在文本字段中,而不是关键字字段中(无法更改)。假设我有以下文件:

然后我希望得到以下结果:

(etc. Truncated for brevity)

我已经使用 elasticsearch-php 客户端在 Elasticsearch 7.10 中为每个文档编制索引。我正在寻找一种有效的方法来计算每个文档中每个单词的出现次数(不是整个索引,也不是文档)。这似乎是一个简单的用例,所以我猜应该有一种简单的方法可以做到这一点,因为每个文档都已经被索引以供搜索。

在我的研究中,我遇到了术语向量,但据说它会对性能产生严重影响 - 这是有道理的,它可以做很多我不需要的事情,例如聚合多个文档中的术语,决定哪些词不是“有趣”等。在我的用例中,我什至想计算停用词或填充词(如“a”、“the”等)的出现。

有许多未解决的问题,例如https://discuss.elastic.co/t/phrase-frequency-in-a-document-and-in-the-whole-collection/61616/2 - 但这些更复杂用例,例如短语,或“无停用词”,或跨文档搜索等。

0 投票
0 回答
32 浏览

elasticsearch - 使用弹性搜索搜索与其他多边形相交的多边形时遇到问题

在我们的应用程序中,ES 保存具有区域字段的对象,其中areas字段类型为 MultiPyligon。(基本上,它是一个多边形数组)。

现在,我们需要搜索其中一个多边形至少部分落在给定多边形内的所有对象(在我们的例子中,它是地图的当前视口)。

我们正在试验的当前查询如下:

问题是这个查询获取了所有接触边界框边缘的多边形。(见图)。我们如何才能获得至少部分位于边界框内的所有多边形?

在此处输入图像描述

0 投票
1 回答
46 浏览

elasticsearch - 无法使用弹性搜索搜索与其他多边形相交的多边形

在我们的应用程序中,ES 保存具有区域字段的对象,其中区域字段为 MultiPyligon 类型。(基本上,它是一个多边形数组)。

现在,我们需要搜索其中一个多边形至少部分落在给定多边形内的所有对象(在我们的例子中,它是地图的当前视口)。

我们正在试验的当前查询如下:

问题是这个查询获取了所有接触边界框边缘的多边形。(见图)。我们如何才能获得至少部分位于边界框内的所有多边形?

在此处输入图像描述

映射如下:

根据文档,geo_shape可以是MultiPolygon. https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-shape.html

这是它看起来如何填充的示例:

在此处输入图像描述

GET crimes/_mapping/field/areas提供以下内容: 在此处输入图像描述


更新 - 更详细的重现步骤

附上集合/索引的转储:https ://www.dropbox.com/s/8inavsvcrnuozw1/dump-2021-12-29t21_54_04.639z.json.zip?dl=0

使用 elasticsearch-php 执行的查询是:

如果我们使用参数执行它: 49.29366604017385,-123.00491857934166,49.19709977562233,-123.26617317321401

我们得到以下信息: 在此处输入图像描述

如果视口发生了一些变化,所以多边形接触到视口的边界:49.28031011582358,-122.92300503734472,49.18371770837152,-123.18425963121705,我们得到其余的多边形: 在此处输入图像描述

0 投票
1 回答
11 浏览

php - 如何取消弹性搜索无痛脚本中的更新

在尝试使用纯 elasticsearch-painless 切换 PHP 代码时,我注意到即使文档在更新前后相同,文档也不会返回“noop”。

我不确定每次执行代码时更新版本是否有任何后果?它是如何扩展的?

views如果在 中找不到身份,我只是想在访问期间更新帖子views_log,并且想知道是否有办法修复“noop”返回,或者以某种方式取消更新?

我现在的代码如下所示:

遵循弹性搜索的文档

ctx['op']:使用默认索引来更新文档。设置为 none 以指定无操作或 delete 以从索引中删除当前文档。

如果条件不满足,我尝试设置ctx.opnone,但这似乎不起作用。