小编TeT*_*TeT的帖子

elastic4s:使用rawQuery得分保持在1

我们在ElasticSearch 2.2.0中使用了elastic4s.许多查询作为JSON存储在磁盘上,并通过elastic4s驱动程序用作rawQuery.结果中的分数在通过命令行提交的查询或elastic4s驱动程序之间不同.elastic4s驱动程序始终为所有结果返回得分1,而命令行执行产生两个不同的得分(针对不同的数据类型).

elastic4s的代码:

   val searchResult = client.execute {
      search in indexName types(product, company, orga, "User", "Workplace") rawQuery preparedQuery sourceInclude(preparedSourceField:_*) sort {sortDefintions:_*} start start limit limit 
    }.await
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了任何内容,但rawQuery preparedQuery没有更改分数1.通过命令行的完整查询很长:

{
    "query": {
        "bool": {
            "must": [
                {
                    "multi_match": {
                        "query": "${search}",
                        "fields": [
                            "name",
                            "abbreviation",
                            "articleNumberManufacturer",
                            "productLine",
                            "productTitle^10",
                            "productSubtitle",
                            "productDescription",
                            "manufacturerRef.name",
                            "props"
                        ]
                    }
                }
            ],
            "filter": [
                {
                    "or": [
                        {
                            "bool": {
                                "must": [
                                    {
                                        "type": {
                                            "value": "Product"
                                        }
                                    },
                                    {
                                        "term": …
Run Code Online (Sandbox Code Playgroud)

scala elasticsearch elastic4s

5
推荐指数
1
解决办法
440
查看次数

如何创建一个 mongodb 查询来查找一个数字是否在两个字段之间?

数据库中的对象有一个“属性”数组,可以容纳不同的对象。其中一些显示数字或范围,看起来像:

{'value': 10}
Run Code Online (Sandbox Code Playgroud)

或者

{'minValue': 4, 'maxValue': 8}
Run Code Online (Sandbox Code Playgroud)

当查询特定数字(如 X)的集合时,我想找到值等于 X 或 minValue <= X <= maxValue 的所有文档。我第一次尝试查询看起来像

db.Pool0.find({$or: [{'properties.value': X}, {'properties.minValue': {$lte: X}, 'properties.maxValue': {$gte: X}}]}, {'_id': 1}).pretty()
Run Code Online (Sandbox Code Playgroud)

缺点是如果属性数组包含多个指定 minValue 和 maxValue 的对象,则 X 可以介于其中任何一个之间。例如

"properties" : [
    {
        "minValue" : 4,
        "maxValue" : 6
    },
    {
        "minValue" : 10,
        "maxValue" : 20
    }
]
Run Code Online (Sandbox Code Playgroud)

将匹配 X = 8。能否改进查询以便尊重属性中的对象结构?

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
4908
查看次数

如何更改播放框架2.4.1的http端口?

我来自一个play 1.2.7应用程序,目前开始使用play framework 2.4.1和scala.首先,我使用激活器web ui来管理应用程序,在那里我无法让应用程序使用不同的http端口.

我更改了conf/application.conf中的http.port设置,但仍然尝试绑定到已经在使用的端口9000.我尝试的设置是:

http.port=7000
Run Code Online (Sandbox Code Playgroud)

关于如何更改通过激活器web ui运行的播放框架2.4.1应用程序的端口的任何建议?

请注意,我可以使用链接问题中的建议

./activator "run 7000"
Run Code Online (Sandbox Code Playgroud)

在应用程序本身将它绑定到端口7000.我的问题仍然是如何通过激活器web ui获得相同的行为?

playframework-2.0

3
推荐指数
1
解决办法
7025
查看次数

通过mongodb聚合中的$ max获取完整对象

我需要通过分组对象的集合masterIDid如果masterID不存在.在具有相同属性的一组对象中,masterID我需要找到具有最高pos属性($max: "$pos")的对象.但是,我很难获得pos最大化的完整对象,似乎通过聚合我只能得到pos属性,而不是整个对象.这是我使用的示例聚合,缺少$ifNullfor masterID:

> db.tst.aggregate([{ "$group": { "_id": "$masterID", "pos": { "$max": "$pos" } } }])
Run Code Online (Sandbox Code Playgroud)

示例对象将是:

> db.tst.find()
{ "_id" : ObjectId("547d6bd28e47d05a9a492e2e"), "masterID" : "master", "pos" : "453", "id" : "hallo" }
{ "_id" : ObjectId("547d6bda8e47d05a9a492e2f"), "masterID" : "master", "pos" : "147", "id" : "welt" }
{ "_id" : ObjectId("547d6be68e47d05a9a492e30"), "masterID" : "master2", "pos" : "1", "id" : "welt" } …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

1
推荐指数
1
解决办法
1180
查看次数