elasticsearch のドキュメントと google からいくつかの例を試してみましたが、理解するのに何の助けにもなりませんでした..
私が持っているサンプル データはほんの数件のブログ投稿です。メールアドレスを含むすべての投稿を表示しようとしています。使用する"email":"someone"
と、すべての投稿が一致していることがわかりますsomeone
が、使用するように変更すると、someone@gmail.com
何も表示されません!
"hits": [
{
"_index": "blog",
"_type": "post",
"_id": "2",
"_score": 1,
"_source": {
"user": "sreenath",
"email": "someone@gmail.com",
"postDate": "2011-12-12",
"body": "Trying to figure out this",
"title": "Elastic search testing"
}
}
]
Getクエリを使用すると、以下に示すように、一致するすべての投稿が表示されますsomeone@anything.com
。しかし、私はこれ
{ "term" : { "email" : "someone" }}
を{ "term" : { "email" : "someone@gmail.com" }}
GET blog/post/_search
{
"query" : {
"filtered" : {
"filter" : {
"and" : [
{ "term" :
{ "email" : "someone" }
}
]
}
}
}
}
次のようにcurl -XPUTを実行しましたが、役に立ちませんでした
curl -XPUT localhost:9200/test/ -d '
{
"settings" : {
"analysis" : {
"filter" : {
"email" : {
"type" : "pattern_capture",
"preserve_original" : 1,
"patterns" : [
"([^@]+)",
"(\\p{L}+)",
"(\\d+)",
"@(.+)"
]
}
},
"analyzer" : {
"email" : {
"tokenizer" : "uax_url_email",
"filter" : [ "email", "lowercase", "unique" ]
}
}
}
}
}
'