弹性搜索中无法识别阿拉伯字符

时间:2018-06-10 19:50:14

标签: elasticsearch

之前有没有人面对这个问题,我把一个阿拉伯文档推送到elasticsearch,当我把它取回来时,里面的所有字符都是有线格式,甚至没有Unicode转义。见下文。有谁知道这是什么问题?

{
    "script": 
    {
        "phrases": 
        [
            {
                "phrase": "'(H 'DE:J+ B/3 'DDG 1H-G (4J! H'DB/3 'DDG '-E/ E1*6I",
                "alternativePhrases": [
                    "'(H 'DE:J+ B/3 'DDG 1H-G (4J! H'DB/3 'DDG '-E/ E.*'1",
                    "'(H 'DE:J+ B/3 'DDG 1H-G (4J! H'DB/3 'DDG '-F' AJ 7'('",
                    "'(H 'DE:J+ B/3 'DDG 1H-G (4J! 'DB/3J 'DDG '-E/ E.*'1",
                    "'(H 'DE:J+ B/3 'DDG 1H-G (4J! 'DB/3 'DDG '-E/ E1*6I"
                ]
            },
            {
                "phrase": " E' 5-G 'D/9'! D'-/",
                "alternativePhrases": [
                    " E' 5-G 'D/9'! 9DI '-/",
                    " E3-* 'D/9'! D'-/",
                    " E' 5-G 'D/9'! D' '-/",
                    " E' 5-G 'D/9'! H'D'-/"
                ]
            }
        ]
    }
}

这是原始文件(注意:虽然不完全相同)

{
    "script": 
    {
        "phrases": 
        [
            {
                "phrase": " اغنيه عن اب ليس فقط عن العين",
                "alternativePhrases": [
                    " غريب عين ابليس سقط عن العين",
                    " غير عين ابليس سقط عن العين",
                    " غير عين ابليس فقط عن العين",
                    " غريب عين ابليس فقط عن العين"
                ]
            },
            {
                "phrase": " كشاف على العين العين بالاحكام",
                "alternativePhrases": [
                    " كشاف على العين العين من له احكام",
                    " كشف الهوى العين العين من له احكام",
                    " كشاف على العين العيب من له احكام",
                    " كشاف على العين العين من الاحكام"
                ]
            }
        ]
    }
}

此外,这是索引映射:

PUT _template/ar-template
{
    "index_patterns": 
    [
        "*ar-idx*"
    ],
    "mappings": 
    {
        "doc": 
        {
            "dynamic": "strict",
            "properties": 
            {
                "script": 
                {
                    "properties": 
                    {
                        "phrases": 
                        {
                            "properties": 
                            {
                                "alternativePhrases": 
                                {
                                    "type": "text",
                                    "fields": 
                                    {
                                        "keyword": 
                                        {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "endTime": 
                                {
                                    "type": "keyword",
                                    "ignore_above": 256
                                },
                                "phrase": 
                                {
                                    "type": "text",
                                    "fields": 
                                    {
                                        "keyword": 
                                        {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "startTime": 
                                {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "settings": 
    {
        "index": 
        {
            "number_of_shards": "5",
            "refresh_interval": "30s",
            "number_of_replicas": "1"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用标记生成器将您的阿拉伯语输入转换为Unicode。 例如,在ELK文档中,演示了一个标记器,用于将阿拉伯文字转换为等效的拉丁文。 创建索引模板并包含这些标记器和过滤器。

以下是我参考的文档的链接: Elastic Search Unicode Character Folding