我试图从ElasticSearch查询中检索嵌套数据,基本上是从电影模型中获取:
title
ratings
categories
现在,我尝试了2个轮胎设置,但都只回馈电影片名,而不是评级或类别。例如。这些索引似乎只有:
curl -X POST "http://localhost:9200/movies/_search?pretty=true" -d ' { "query" : { "query_string" : {"query" : "t*"} }, "facets" : { "categories" : { "terms" : {"field" : "categories"} } } } ' { "took" : 16, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 3, "max_score" : 1.0, "hits" : [ { "_index" : "movies", "_type" : "movie", "_id" : "13", "_score" : 1.0, "_source" : {"description":null,"id":13,"title":"Tiny Plastic Men"} }, { "_index" : "movies", "_type" : "movie", "_id" : "32", "_score" : 1.0, "_source" : {"description":null,"id":32,"title":"The Extreme Truth"} }, { "_index" : "movies", "_type" : "movie", "_id" : "39", "_score" : 1.0, "_source" : {"description":null,"id":39,"title":"A Time of Day"} } ] }, "facets" : { "categories" : { "_type" : "terms", "missing" : 3, "total" : 0, "other" : 0, "terms" : [ ] } }
这是我的电影模型:
class Movie :categorizations belongs_to :user has_many :ratings mapping do indexes :id, type: 'integer' indexes :title, boost: 40 indexes :description, analyzer: 'snowball' indexes :categories do indexes :id, type: 'integer' indexes :name, type: 'string', index: 'not_analyzed' end indexes :ratings do indexes :id, type: 'integer' indexes :stars, type: 'integer' end end end
我的搜索实验的分支在这里:https://github.com/mulderp/moviedb/tree/categories
我如何使搜索工作的方面,例如体裁-->评级。
您实际上并没有对类别或评级进行索引:它们在映射中,但Tire的to_indexed_json
默认实现只是调用ActiveRecord提供的to_json
方法。
您需要重写它以包括类别/评等信息,例如
def to_indexed_json
to_json(:include => [:categories, :ratings])
end
我正在开发一个Java的应用程序,我试图遵循我公司建议的所有编码指南。为此,我安装了一些工具,如Checkstyle、PMD和findBugs,但我不是这些代码质量分析器的专家,我不知道如何配置所有的规则。特别是我不知道有没有一个规则来检查这个要求(我的公司给出的):“继承等级必须在6级或以下。长的继承树使得代码很难阅读、理解、维护和重构。大多数继承案例可以通过实现接口和使用更容易维护的组合来覆盖
问题内容: 在阅读 Tyre 文档时,我的印象是您应该使用或方法,因为(我的理解是。)使用来填充。 问题是,我找到了一些同时使用两者的教程。为什么? 基本上,我的应用程序现在可以与一起使用,但是我无法弄清楚如何设置某些属性的提升值(因此,我开始查看映射的原因),我想知道同时使用这两个属性是否会产生一些冲突。 问题答案: 尽管和方法是相关的,但实际上它们有两个不同的目的。 该 方法的目的是为索引内的
问题内容: 我已经设置了索引。我不时向其推送新文档。 我只想在所有文档都编入索引后回答我的查询。我怎样才能做到这一点? 问题答案: 在ES 2中,您可以在为新文档建立索引后立即调用API,但是不建议在生产环境中使用它,因为这可能会降低群集的性能。 在ES5中,您将能够使用发送索引查询,并且ES仅在准备好搜索新文档时才响应。
问题内容: 我如何从Python的Elasticsearch中获得100000个寄存器?MatchAll查询仅检索10000。 问题答案: 就像已经指出的那样,我将使用Scan API来做到这一点。 您还应该阅读有关Elasticsearch python DSL中的扫描助手的信息,网址为 http://elasticsearch- py.readthedocs.io/en/master/help
问题内容: 是否可以使用Tire更新elasticsearch设置?我有这个curl命令,我想自动运行。 该值可通过轮胎获得,但我不确定如何应用。 问题答案: 可能,但是很丑:) 在将来的版本中会变得更好…
问题内容: 在Elasticsearch中进行等效于SQL连接的最佳方法是什么? 我有一个带有两个大表的SQL安装程序:Persons和Items。一个人可以拥有 许多 物品。人员和项目行都可以更改(即更新)。我必须运行按人员和项目方面进行筛选的搜索。 在Elasticsearch中,您似乎可以使Person成为Item的嵌套文档,然后使用。 但是:如果您随后更新一个Person,我认为您需要更新