1

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" ]
            }
         }
      }
   }
}
'
4

1 に答える 1