Elasticsearch中的意外字符串排序(不区分大小写)

alexbilbie

我有要在Elasticsearch中排序的控制台平台的列表。

这是“名称”字段的映射:

{
    "name": {
        "type": "multi_field",
        "fields": {
            "name": {
                "type": "string",
                "index": "analyzed"
            },
            "sort_name": {
                "type": "string",
                "index": "not_analyzed"
            }
        }
    }
}

当我执行以下查询时

{
  "query": {
    "match_all": {}
  },
    "sort": [
        {
          "name.sort_name": { "order": "asc" }
        }
    ],
    "fields": ["name"]
}

我得到以下结果:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "failed": 0
    },
    "hits": {
        "total": 17,
        "max_score": null,
        "hits": [
            {
                "_index": "platforms",
                "_type": "platform",
                "_id": "1393602489",
                "_score": null,
                "fields": {
                    "name": "GameCube"
                },
                "sort": [
                    "GameCube"
                ]
            },
            {
                "_index": "platforms",
                "_type": "platform",
                "_id": "1393602490",
                "_score": null,
                "fields": {
                    "name": "Gameboy Advance"
                },
                "sort": [
                    "Gameboy Advance"
                ]
            },


    {
            "_index": "platforms",
            "_type": "platform",
            "_id": "1393602498",
            "_score": null,
            "fields": {
                "name": "Nintendo 3DS"
            },
            "sort": [
                "Nintendo 3DS"
            ]
        },

        ...remove for brevity ...

        {
            "_index": "platforms",
            "_type": "platform",
            "_id": "1393602493",
            "_score": null,
            "fields": {
                "name": "Xbox 360"
            },
            "sort": [
                "Xbox 360"
            ]
        },
        {
            "_index": "platforms",
            "_type": "platform",
            "_id": "1393602502",
            "_score": null,
            "fields": {
                "name": "Xbox One"
            },
            "sort": [
                "Xbox One"
            ]
        },
        {
            "_index": "platforms",
            "_type": "platform",
            "_id": "1393602497",
            "_score": null,
            "fields": {
                "name": "iPhone/iPod"
            },
            "sort": [
                "iPhone/iPod"
            ]
        }
    ]
}

除了iPhone/iPod结果在末尾(而不是在GameBoy Advance之后)之外,所有内容均按预期排序-为什么/名称中的会对排序产生影响?

谢谢

alexbilbie

好的,我发现原因与网页无关/ES将按大写字母和小写字母排序。

settings在索引创建的中添加了自定义分析器

{
    "analysis": {
        "analyzer": {
            "sortable": {
                "tokenizer": "keyword",
                "filter": [
                    "lowercase"
                ]
            }
        }
    }
}

然后在字段映射中,我添加'analyzer': 'sortable'sort_name多字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不区分大小写的字符串数组排序

来自分类Dev

不区分大小写的排序集-区分大小写保留相同的字符串

来自分类Dev

在MySQL中不区分大小写地排序字符串

来自分类Dev

在MySQL中不区分大小写地排序字符串

来自分类Dev

字符串Java集合排序方法是不区分大小写,特殊字符工作正常

来自分类Dev

字符串不区分大小写的模式匹配

来自分类Dev

如何使字符串不区分大小写

来自分类Dev

不区分大小写的字符串数组比较

来自分类Dev

如何使字符串比较不区分大小写?

来自分类Dev

不区分大小写比较字符串

来自分类Dev

如何使字符串替换不区分大小写

来自分类Dev

regEx包装不区分大小写的字符串

来自分类Dev

不区分大小写的字符串数组比较

来自分类Dev

不区分大小写的拆分字符串

来自分类Dev

不区分大小写的bash字符串替换

来自分类Dev

内置不区分大小写的字符串=

来自分类Dev

从JavaScript中的字符串中替换数组中的值,不区分大小写

来自分类Dev

字符串区分大小写

来自分类Dev

使用区分大小写的字符串键对Java中的对象进行排序

来自分类Dev

在TypeScript中执行区分大小写的字符串排序

来自分类Dev

C ++中不区分大小写的标准字符串比较

来自分类Dev

我可以在模拟中处理不区分大小写的字符串吗?

来自分类Dev

不带锚点的Java中不区分大小写的字符串匹配

来自分类Dev

Go中不区分大小写的字符串比较

来自分类Dev

Golang中不区分大小写的字符串搜索

来自分类Dev

向不区分大小写的RegExp中开始替换的东西添加字符串。

来自分类Dev

查找字符串中的文本,不区分大小写

来自分类Dev

.Net Core查询来自MongoDb列表中不区分大小写的字符串数据

来自分类Dev

Fortran中不区分大小写的字符串比较

Related 相关文章

  1. 1

    不区分大小写的字符串数组排序

  2. 2

    不区分大小写的排序集-区分大小写保留相同的字符串

  3. 3

    在MySQL中不区分大小写地排序字符串

  4. 4

    在MySQL中不区分大小写地排序字符串

  5. 5

    字符串Java集合排序方法是不区分大小写,特殊字符工作正常

  6. 6

    字符串不区分大小写的模式匹配

  7. 7

    如何使字符串不区分大小写

  8. 8

    不区分大小写的字符串数组比较

  9. 9

    如何使字符串比较不区分大小写?

  10. 10

    不区分大小写比较字符串

  11. 11

    如何使字符串替换不区分大小写

  12. 12

    regEx包装不区分大小写的字符串

  13. 13

    不区分大小写的字符串数组比较

  14. 14

    不区分大小写的拆分字符串

  15. 15

    不区分大小写的bash字符串替换

  16. 16

    内置不区分大小写的字符串=

  17. 17

    从JavaScript中的字符串中替换数组中的值,不区分大小写

  18. 18

    字符串区分大小写

  19. 19

    使用区分大小写的字符串键对Java中的对象进行排序

  20. 20

    在TypeScript中执行区分大小写的字符串排序

  21. 21

    C ++中不区分大小写的标准字符串比较

  22. 22

    我可以在模拟中处理不区分大小写的字符串吗?

  23. 23

    不带锚点的Java中不区分大小写的字符串匹配

  24. 24

    Go中不区分大小写的字符串比较

  25. 25

    Golang中不区分大小写的字符串搜索

  26. 26

    向不区分大小写的RegExp中开始替换的东西添加字符串。

  27. 27

    查找字符串中的文本,不区分大小写

  28. 28

    .Net Core查询来自MongoDb列表中不区分大小写的字符串数据

  29. 29

    Fortran中不区分大小写的字符串比较

热门标签

归档