问题标签 [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.
php - elasticsearch中带有“union”的子查询
我目前正忙于一个项目,我们选择使用 Elasticsearch 作为分类网站的搜索引擎。
目前,我有以下业务规则:
每页列出 25 个广告。在这 25 个中,显示的广告中有 10 个必须是“付费广告”,另外 15 个必须是“免费”。所有 25 项必须与执行的搜索相关(即关键字、地区、价格、类别等)
我知道我可以使用两个单独的查询来做到这一点,但这似乎是对资源的巨大浪费。是否可以进行“子查询”(如果您可以这样称呼它们?)并将这些结果合并到一个结果集中?不知何故,在一个查询中只能从弹性搜索中获取 10 个“付费”广告和 15 个“免费”广告?当然,假设有足够多的广告使这个要求成为可能。
谢谢你的帮助!
编辑- 只需添加我的映射信息以更清晰。
然后我想要的是能够查询并获得 10 个结果,其中“advertType”:“Paid”和15 个“advertType”:“Free”...
elasticsearch - Elasticsearch - 如果数组包含元素,则包含在构面中
我试图找出是否可以对一个字段进行分面/聚合,如果该字段(这是一个数组)包含 1 个或多个记录。
例如 - 假设我的索引中有 3 个文档,都在“用户”类型下。
我想要某种方式(使用聚合)来返回“拥有(或没有,因为我可以从他们的个人资料中的_totalHits)照片中减去的用户数量。” 在此示例中,预期结果将是2,因为 2 个用户有照片,或1,因为 1 个用户没有照片。显然,我想要的首选是返回有照片的用户数量的那个。
这可能吗?如果是这样 - 我将使用哪种类型的聚合来完成此操作?
sql - 如何将“and or”where子句从sql查询转换为elasticsearch过滤器
我的 SQL 查询中有一个 WHERE 子句,必须将其转换为 elasticsearch bool 过滤器。
这是 where 子句:
我已经为查询的内部 AND 编写了 AND 过滤器,但现在我需要将它们放入 bool 过滤器。
试着:
什么都不返回。
请帮忙!
symfony - 控制台命令中未调用事件订阅者
我必须在 cron 上运行命令来更新数据库。但是,这似乎给我的 Elastica 索引带来了问题。大概是因为事件订阅者没有被命令调用。
我的服务看起来像这样
有没有办法确保调用事件订阅者?
search - 通过查询字符串搜索空间不适用于特定字段
在我已经使用以下映射索引的 Twitter 用户描述字段中搜索“follow back”。
注意:仅突出显示部分映射。
1.
2.
3.
4.
在评论 setFields 时搜索时,它会给我很多结果,例如
如果你跟着我就回来!:) 100% 关注!:)
跟我来,我跟着回来 :) instagram:juliemar25 我跟着回来
但是在取消注释setFields和defaultOperator到AND之后,它没有显示任何结果。并且通过取消注释setFields和defaultOperator到OR,它只向我显示在描述中具有“跟随”的结果。
Q1:为什么空白不在 setFields 上工作,而是在 _all 上工作?
使用匹配查询时
它还仅显示了两个仅在描述中具有“跟进”的结果。但是在将匹配字段更改为_all后,它会在描述字段中显示很多包含“后续”的结果
Q2。为什么会这样?如何搜索空格分隔的单词?
symfony - 在没有 ES 服务器的情况下使用 FOSElasticaBundle 对 Symfony 应用程序进行单元测试?
我有一个包含一组现有单元测试的应用程序,这些单元测试使用 SQLite 作为数据库。我最近通过 ES 添加了搜索功能,它取代了许多用于直接查询数据库的端点操作。我想在不测试 ES 本身的情况下测试与这些端点相关的所有业务逻辑,这意味着没有可用的 ES 服务器。我计划在一组集成测试中测试 ES 本身,以降低运行频率。
我的问题是试图准确追踪执行流程的情况。
我的第一个倾向是简单地创建 FOSElasticaBundle 为我的索引创建的 ES Finder 的模拟对象。因为我使用的是分页,所以结果比我想象的要复杂:
这实际上一直有效,直到我从控制器返回视图。我的服务从我存储在文件中的 JSON 搜索响应中获取带有预填充结果集的模拟分页适配器(随后传递到我的 ResultSet 对象中)。但是,一旦我返回视图,似乎有一个监听器尝试使用 Query 再次查询 ES,而不是使用我已经传入的 ResultSet。
我似乎找不到这个听众。我也不明白为什么当 ResuletSet 已经存在时它会尝试查询。
我也在使用 FOSRestBundle,并利用他们的 ViewListener 来自动序列化我返回的任何内容。我也没有在该流程中看到任何嫌疑人。我认为这可能与结果集的序列化有关,但到目前为止还无法追踪到有问题的代码。
之前有没有人尝试过类似的事情,并且对如何调试我当前的设置或替代的更好的设置来模拟 ES 进行此类测试有任何建议?
search - 脚本评分功能不起作用,但 addDecayFunction 正在使用 FunctionScore 查询
我正在使用 Elastica 并将使用 \Elastica\Query\FunctionScore(); 功能得分 -> script_score。这里 addDecayFunction() 工作正常,但 addScriptScoreFunction() 不起作用并且没有任何异常。
DecyFunction 被评论,因为它正在工作
这是代码
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 亿用户意味着我必须等待几天。
请给我任何合理的解决方案。