0

私は本当にこれが機能していると思っていましたが、実際には問題が発生しています。ネストされたドキュメントと一致するように動的テンプレートを設定しています。マッピングを次のように設定しました。

curl -XPUT 'http://localhost:9200/test/' -d '{
    "mappings": {
        "Item": {
            "dynamic_templates": [
                {
                    "metadata_template": {
                        "match_mapping_type": "string",
                        "path_match": "metadata.*",
                        "mapping": {
                            "type": "multi_field",
                            "fields": {
                                "{name}": {
                                    "type": "{dynamic_type}",
                                    "index": "analyzed"
                                },
                                "standard": {
                                    "type": "{dynamic_type}",
                                    "index": "analyzed",
                                    "analyzer" : "standard"
                                }
                            }
                        }
                    }
                }
            ]
        }
    },
    "settings": {
        "analysis": {
            "filter": {
                "my_ngram": {
                    "max_gram": 10,
                    "min_gram": 1,
                    "type": "nGram"
                },
                "lb_stemmer": {
                    "type": "stemmer",
                    "name": "english"
                }
            },
            "analyzer": {
                "default_index": {
                    "filter": [
                        "standard",
                        "lowercase",
                        "asciifolding",
                        "my_ngram"
                    ],
                    "type": "custom",
                    "tokenizer": "keyword"
                },
                "default_search": {
                    "filter": [
                        "standard",
                        "lowercase"
                    ],
                    "type": "custom",
                    "tokenizer": "standard"
                }
            }
        }
    }
}'

私の期待は、「メタデータ」で始まるすべてのフィールドです。分析されたフィールドと、サフィックス「.standard」が付いた未分析のフィールドに保存する必要があります。私はこれを完全に誤解していますか?

アイテムを追加します:

curl -XPUT localhost:9200/test/Item/1 -d '{
                           "name" : "test", 
                           "metadata" : {
                                "strange_tag" : "CLEAN_2C_abcdefghij_07MAY2005_AB" 
                                }
                            }'

このクエリはうまく機能します。

{
    "query": {
        "match": {
            "metadata.strange_tag": {
                "query": "CLEAN_2C_abcdefghij_07MAY2005_AB",
                "type": "boolean"
            }
        }
    }
}

しかし、CLEAN または clean という単語を検索しても結果は返されません。そのフィールドは ngram トークナイザーを通過したはずです。私が間違っていることについて誰か提案がありますか?

4

1 に答える 1

1

NGRAM アナライザーを間違って作成していたようです。これが実際の例です:

curl -XDELETE 'localhost:9200/test'

    curl -XPUT 'localhost:9200/test' -d '{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_ngram_analyzer": {
                    "tokenizer": "my_ngram_tokenizer",
                    "filter": [
                        "standard",
                        "lowercase",
                        "asciifolding"
                    ]
                }
            },
            "tokenizer": {
                "my_ngram_tokenizer": {
                    "type": "nGram",
                    "min_gram": "2",
                    "max_gram": "3",
                    "token_chars": [
                        "letter",
                        "digit"
                    ]
                }
            }
        }
    },
    "mappings": {
        "Item": {
            "dynamic_templates": [
                {
                    "metadata_template": {
                        "match_mapping_type": "string",
                        "path_match": "*",
                        "mapping": {
                            "type": "multi_field",
                            "fields": {
                                "{name}": {
                                    "type": "{dynamic_type}",
                                    "index": "analyzed",
                                    "analyzer" : "my_ngram_analyzer"
                                },
                                "standard": {
                                    "type": "{dynamic_type}",
                                    "index": "analyzed",
                                    "analyzer": "standard"
                                }
                            }
                        }
                    }
                }
            ]
        }
    }
}'
于 2013-09-09T14:57:15.463 に答える