Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch Elasticsearch按浮点排序的顺序看起来错误_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lucene - Fatal编程技术网 elasticsearch Elasticsearch按浮点排序的顺序看起来错误,elasticsearch,lucene,elasticsearch,Lucene" /> elasticsearch Elasticsearch按浮点排序的顺序看起来错误,elasticsearch,lucene,elasticsearch,Lucene" />

elasticsearch Elasticsearch按浮点排序的顺序看起来错误

elasticsearch Elasticsearch按浮点排序的顺序看起来错误,elasticsearch,lucene,elasticsearch,Lucene,我在每个文档中都有一个字段,其中包含一个浮动,这意味着可以作为对文档进行排序的备用方法。因为它是一个浮点数,所以可以是负数。当我要求Elasticsearch搜索“order”:“desc”时,我首先得到最大的负值,然后是较小的负值。这是错误的,好像这个标志被忽略了,这根本不是我想要的 "popRank": { "unmapped_type": "float", "order": "desc" } 文档的部分如下所示: "popRank": -310, 如果查询使用desc我

我在每个文档中都有一个字段,其中包含一个浮动,这意味着可以作为对文档进行排序的备用方法。因为它是一个浮点数,所以可以是负数。当我要求Elasticsearch搜索
“order”:“desc”
时,我首先得到最大的负值,然后是较小的负值。这是错误的,好像这个标志被忽略了,这根本不是我想要的

"popRank": {
    "unmapped_type": "float",
    "order": "desc"
}
文档的部分如下所示:

"popRank": -310,

如果查询使用
desc
我首先得到-310,然后得到-157。无法完全确定当有正数时会发生什么,因为在这个小测试数据集中没有正数。

首先,您需要确保您的
popRank
字段映射为
float
,而不是
string

curl -XGET localhost:9200/your_index/_mapping/your_type?fields=popRank
应将此邮件退还给您:

{
  "your_index" : {
    "mappings" : {
      "your_type" : {
        "properties" : {
          "popRank" : {
            "type" : "float"         <---- "float" MUST appear here and NOT "string"
          }
        }
      }
    }
  }
}
然后,我们在整个频谱中添加一些具有
popRank
的文档

curl -XPOST localhost:9200/test/test/_bulk -d '
{"index": {"_id": 1}}
{"popRank": 123}
{"index": {"_id": 2}}
{"popRank": -157}
{"index": {"_id": 3}}
{"popRank": 1234}
{"index": {"_id": 4}}
{"popRank": 0}
{"index": {"_id": 5}}
{"popRank": -310}
{"index": {"_id": 6}}
{"popRank": 332}
{"index": {"_id": 7}}
{"popRank": -10}
'
最后,我们可以用

curl -XPOST localhost:9200/test/test/_search -d '{
    "sort": {
        "popRank": {
            "unmapped_type": "float",
            "order": "desc"
        }
    },
    "query": {"match_all": {}}
}'
在结果中,我看到所有文档都按
popRank
正确排序,即
1234、332、123、0、-10、-157、-310


因此,首先要确保您的
popRank
字段没有作为
string
索引,因为如果是这种情况,上面的示例文档将按如下方式排序:
332、-310、-157、1234、123、-10、0
,这就是您的案例中所发生的情况。

似乎是一种字典排序检查映射是
popRank
类型
float
string
?popRank映射为字符串是正确的。它使用Spark使用Map[String,Any]写入索引。地图的一部分是“popRank”->n,其中n是一个浮点。使用
rdd[Map[String,Any]].saveToEs(esIndexURI,Map(“ES.mapping.id”->“id”)
部分“ES.mapping.id”->“id”告诉ES使用“id”rdd'MAP``中的关联作为doc-id。有没有办法将popRank映射到float,我认为这可以通过反射来确定,但可能不是。我真的很感激您准确地解决了这个问题。我会将此标记为答案,但我看不到上面的解决方案。如何使用
rdd.saveas(索引,映射)
我可以将popRank映射到Float吗?我认为最后一点是在创建索引时创建字段到类型的映射。然后一切都很好,谢谢,很高兴你找到了答案。最好是在创建索引时创建映射,然后你就会一直很好。
curl -XPOST localhost:9200/test/test/_search -d '{
    "sort": {
        "popRank": {
            "unmapped_type": "float",
            "order": "desc"
        }
    },
    "query": {"match_all": {}}
}'