问题标签 [elastica]

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 投票
3 回答
3865 浏览

php - elasticsearch中带有“union”的子查询

我目前正忙于一个项目,我们选择使用 Elasticsearch 作为分类网站的搜索引擎。

目前,我有以下业务规则:

每页列出 25 个广告。在这 25 个中,显示的广告中有 10 个必须是“付费广告”,另外 15 个必须是“免费”。所有 25 项必须与执行的搜索相关(即关键字、地区、价格、类别等)

我知道我可以使用两个单独的查询来做到这一点,但这似乎是对资源的巨大浪费。是否可以进行“子查询”(如果您可以这样称呼它们?)并将这些结果合并到一个结果集中?不知何故,在一个查询中只能从弹性搜索中获取 10 个“付费”广告和 15 个“免费”广告?当然,假设有足够多的广告使这个要求成为可能。

谢谢你的帮助!

编辑- 只需添加我的映射信息以更清晰。

然后我想要的是能够查询并获得 10 个结果,其中“advertType”:“Paid”15 个“advertType”:“Free”...

0 投票
0 回答
766 浏览

php - Elasticsearch 更新同一文档同时导致 VersionConflictEngineException

我的工作人员处理对象并将它们写入 mysql 和 elasticsearch,现在恰好有 2 个(或多个工作人员)处理类似的对象并更新相同的 ES 文档。

导致以下错误:

我做了一些研究并尝试使用该retry_on_conflict选项,但这导致了以下错误:

我使用Elastica 1.2.1版 和 Elasticsearch 1.2.1 版

0 投票
1 回答
352 浏览

elasticsearch - Elasticsearch - 如果数组包含元素,则包含在构面中

我试图找出是否可以对一个字段进行分面/聚合,如果该字段(这是一个数组)包含 1 个或多个记录。

例如 - 假设我的索引中有 3 个文档,都在“用户”类型下。

我想要某种方式(使用聚合)来返回“拥有(或没有,因为我可以从他们的个人资料中的_totalHits)照片中减去的用户数量。” 在此示例中,预期结果将是2,因为 2 个用户有照片,或1,因为 1 个用户没有照片。显然,我想要的首选是返回照片的用户数量的那个。

这可能吗?如果是这样 - 我将使用哪种类型的聚合来完成此操作?

0 投票
1 回答
904 浏览

sql - 如何将“and or”where子句从sql查询转换为elasticsearch过滤器

我的 SQL 查询中有一个 WHERE 子句,必须将其转换为 elasticsearch bool 过滤器。

这是 where 子句:

我已经为查询的内部 AND 编写了 AND 过滤器,但现在我需要将它们放入 bool 过滤器。

试着:

什么都不返回。

请帮忙!

0 投票
2 回答
16014 浏览

php - Elasticsearch MapperParsingException [无法解析,文档为空] 在索引期间

0 投票
0 回答
238 浏览

symfony - 控制台命令中未调用事件订阅者

我必须在 cron 上运行命令来更新数据库。但是,这似乎给我的 Elastica 索引带来了问题。大概是因为事件订阅者没有被命令调用。

我的服务看起来像这样

有没有办法确保调用事件订阅者?

0 投票
1 回答
714 浏览

search - 通过查询字符串搜索空间不适用于特定字段

在我已经使用以下映射索引的 Twitter 用户描述字段中搜索“follow back”。

注意:仅突出显示部分映射。

1.

2.

3.

4.

在评论 setFields 时搜索时,它会给我很多结果,例如

如果你跟着我就回来!:) 100% 关注!:)

跟我来,我跟着回来 :) instagram:juliemar25 我跟着回来

但是在取消注释setFieldsdefaultOperatorAND之后,它没有显示任何结果。并且通过取消注释setFieldsdefaultOperatorOR,它只向我显示在描述中具有“跟随”的结果。

Q1:为什么空白不在 setFields 上工作,而是在 _all 上工作?

使用匹配查询时

它还仅显示了两个仅在描述中具有“跟进”的结果。但是在将匹配字段更改为_all后,它会在描述字段中显示很多包含“后续”的结果

Q2。为什么会这样?如何搜索空格分隔的单词?

0 投票
2 回答
2139 浏览

symfony - 在没有 ES 服务器的情况下使用 FOSElasticaBundle 对 Symfony 应用程序进行单元测试?

我有一个包含一组现有单元测试的应用程序,这些单元测试使用 SQLite 作为数据库。我最近通过 ES 添加了搜索功能,它取代了许多用于直接查询数据库的端点操作。我想在不测试 ES 本身的情况下测试与这些端点相关的所有业务逻辑,这意味着没有可用的 ES 服务器。我计划在一组集成测试中测试 ES 本身,以降低运行频率。

我的问题是试图准确追踪执行流程的情况。

我的第一个倾向是简单地创建 FOSElasticaBundle 为我的索引创建的 ES Finder 的模拟对象。因为我使用的是分页,所以结果比我想象的要复杂:

这实际上一直有效,直到我从控制器返回视图。我的服务从我存储在文件中的 JSON 搜索响应中获取带有预填充结果集的模拟分页适配器(随后传递到我的 ResultSet 对象中)。但是,一旦我返回视图,似乎有一个监听器尝试使用 Query 再次查询 ES,而不是使用我已经传入的 ResultSet。

我似乎找不到这个听众。我也不明白为什么当 ResuletSet 已经存在时它会尝试查询。

我也在使用 FOSRestBundle,并利用他们的 ViewListener 来自动序列化我返回的任何内容。我也没有在该流程中看到任何嫌疑人。我认为这可能与结果集的序列化有关,但到目前为止还无法追踪到有问题的代码。

之前有没有人尝试过类似的事情,并且对如何调试我当前的设置或替代的更好的设置来模拟 ES 进行此类测试有任何建议?

0 投票
1 回答
428 浏览

search - 脚本评分功能不起作用,但 addDecayFunction 正在使用 FunctionScore 查询

我正在使用 Elastica 并将使用 \Elastica\Query\FunctionScore(); 功能得分 -> script_score。这里 addDecayFunction() 工作正常,但 addScriptScoreFunction() 不起作用并且没有任何异常。

DecyFunction 被评论,因为它正在工作

这是代码

0 投票
1 回答
1778 浏览

elasticsearch - 如何从 650 M 数据中获取 elasticsearch 中特定字段值的出现次数

我已经在 ES 中索引了 Twitter 数据。有1.1 亿个 Twitter 唯一用户个人资料6.5 亿条推文。两者都在单独的索引(索引:twitter-profiles,类型:profiles)中,用于推文(索引:twitter-tweets,类型:tweets)。

每条推文都附有个人资料的user_id_str

我在获取特定用户的出现次数时遇到问题。我使用了Facet/terms 和 Aggregation/Terms但都给了我异常PartialShardFailureException因为有很多数据需要计算。我使用了以下查询

然后我再试一次。

我使用了第二种方法Scan。在这里,我从配置文件类型中获取配置文件的 ID,然后在推文类型中搜索它。它给了我结果,但在2 秒OOps后出现了一个结果。有 1.1 亿用户意味着我必须等待几天。

请给我任何合理的解决方案。