Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
Sorting 弹性搜索排序未按预期工作_Sorting_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Integer - Fatal编程技术网 elasticsearch,integer,Sorting,elasticsearch,Integer" /> elasticsearch,integer,Sorting,elasticsearch,Integer" />

Sorting 弹性搜索排序未按预期工作

Sorting 弹性搜索排序未按预期工作,sorting,elasticsearch,integer,Sorting,elasticsearch,Integer,我正在使用弹性搜索版本1.2.1,并试图在整数字段上对结果进行排序,但它的工作方式与我认为的不一样,我无法按asc或desc顺序进行排序。我正在本地主机上使用Chrome的Sense扩展和Elastic search侦听端口9200 下面是我如何定义索引的: PUT keyword_test 然后我添加了关键字_测试索引的映射: PUT /keyword_test/_mapping/keyword { "keyword": { "properties" : {

我正在使用弹性搜索版本1.2.1,并试图在整数字段上对结果进行排序,但它的工作方式与我认为的不一样,我无法按asc或desc顺序进行排序。我正在本地主机上使用Chrome的Sense扩展和Elastic search侦听端口9200

下面是我如何定义索引的:

PUT keyword_test
然后我添加了关键字_测试索引的映射:

PUT /keyword_test/_mapping/keyword
{
    "keyword": {
        "properties" : {
            "id": {
                "type": "string"
            },
            "search_date": {
                "type": "string"
            },
            "keyword": {
                "type": "string",
                "index": "analyzed"
            },
            "count": {
                "type": "integer"
            }
        }
    }
}
然后,我添加了不同计数的不同关键字,并尝试使用以下查询在它们之间进行搜索:

GET _search 
{
    "sort": {
        "count": {
            "order": "asc",
            "ignore_unmapped": true
        }
    },
    "query": {
        "fuzzy": {
           "keyword": "iphone"
        }
    }
}
我得到的结果如下:

"hits": {
      "total": 3,
      "max_score": null,
      "hits": [
         {
            "_index": "keyword_test",
            "_type": "keyword",
            "_id": "8",
            "_score": null,
            "_source": {
               "id": 8,
               "count": 9000,
               "keyword": "iphone 5s",
               "search_date": "2015-05-05"
            },
            "sort": [
               9000
            ]
         },
         {
            "_index": "keyword_test",
            "_type": "keyword",
            "_id": "10",
            "_score": null,
            "_source": {
               "id": 10,
               "count": 9500,
               "keyword": "iphone 6 plus",
               "search_date": "2015-05-05"
            },
            "sort": [
               9500
            ]
         },
         {
            "_index": "keyword_test",
            "_type": "keyword",
            "_id": "9",
            "_score": null,
            "_source": {
               "id": 9,
               "count": 9100,
               "keyword": "iphone 6",
               "search_date": "2015-05-05"
            },
            "sort": [
               9100
            ]
         }
      ]
   }

结果应该是9000、9100、9500顺序,但它是9000、9500、9100顺序。如果删除忽略未映射的,我也会得到SearchParseException。我该怎么办?我是否缺少计数字段的映射?任何帮助都将不胜感激,谢谢。

建议:您可以重复这个过程并检查一下,因为我自己在本地系统上尝试过这个方法。它的工作,因为它是预期的工作。对我来说,结果是好的。谢谢你的评论。我尝试了同样的场景,又得到了同样的结果。顺便说一下,我使用的是1.2.1版本,您是否使用相同的版本并得到正确的结果?我的ES版本是1.4。5@BurakA.thesearchparseexception很可能是因为搜索跨越集群中的所有索引,如果更改为索引特定的搜索获取关键字\u test/\u search并删除忽略\u unmapping,则应停止获取异常。我仍然不知道为什么你会得到奇怪的结果,在1.2中对我有效。1@AkashYadav我认为1.2.1和1.4.5之间可能存在差异。我也会尝试1.4.5,但我需要让它适用于1.2.1,因为它在我们的生产服务器中使用。