elasticsearch 문서와 Google에서 몇 가지 예제를 시도했지만 알아내는 데 도움이되지 않았습니다 ..
제가 가지고있는 샘플 데이터는 블로그 게시물이 거의 없습니다. 이메일 주소로 모든 게시물을 보려고합니다. 사용하면 "email":"someone"
일치하는 모든 게시물이 표시 someone
되지만 사용하도록 변경하면 [email protected]
아무것도 표시되지 않습니다!
"hits": [
{
"_index": "blog",
"_type": "post",
"_id": "2",
"_score": 1,
"_source": {
"user": "sreenath",
"email": "[email protected]",
"postDate": "2011-12-12",
"body": "Trying to figure out this",
"title": "Elastic search testing"
}
}
]
Get query를 사용하면 다음과 같이 일치하는 모든 게시물이 표시됩니다 [email protected]
. 하지만이를 변경하려면 { "term" : { "email" : "someone" }}
에{ "term" : { "email" : "[email protected]" }}
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" ]
}
}
}
}
}
'
이메일 주소에 대한 사용자 지정 분석기를 만들었지 만 사용하고 있지 않습니다. email
아래와 같이 해당 분석기를 실제로 사용하려면 매핑 유형에서 필드 를 선언해야 합니다. 또한, 그 분석기와 올바른 인덱스를 만들 수 있는지, 즉을 blog
하지test
change this
|
v
curl -XPUT localhost:9200/blog/ -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" ]
}
}
}
},
"mappings": { <--- add this
"post": {
"properties": {
"email": {
"type": "string",
"analyzer": "email"
}
}
}
}
}
'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다