2013-05-07 3 views
1

내 목표는 필드 "이름"에 부스트를 적용하는 것입니다 (아래 예 참조)하지만 "존"을 검색 할 때 두 가지 문제가 있습니다 이름이 "대니"인 경우elasticsearch에서 특정 필드를 다른 필드보다 높일 수있는 방법은 무엇입니까?

  1. 검색도 {name: "dany", message: "hi bob"} 일치한다 및
  2. 검색 메시지를 통해 이름을 증폭되지

요지에 유래의 FO 이후 https://gist.github.com/tomaspet262/5535774

(에 (이름 행 = "존"상단에 있어야합니다) rm 제출 결과 '귀하의 게시물에 올바른 형식의 코드가 아닌 코드가 포함되어있는 것 같습니다.'

+0

올바른 형식의 코드에 틱 (예 : '')이 포함되도록 편집했습니다. –

답변

0

색인 시간 부스팅 대신 쿼리 시간 부스팅을 사용하는 것이 좋습니다.

#DELETE 
curl -XDELETE 'http://localhost:9200/test' 
echo 
# CREATE 
curl -XPUT 'http://localhost:9200/test?pretty=1' -d '{ 
    "settings": { 
     "analysis" : { 
      "analyzer" : { 
       "my_analyz_1" : { 
        "filter" : [ 
         "standard", 
         "lowercase", 
         "asciifolding" 
        ], 
        "type" : "custom", 
        "tokenizer" : "standard" 
       } 
      } 
     } 
    } 
}' 
echo 
# DEFINE 
curl -XPUT 'http://localhost:9200/test/posts/_mapping?pretty=1' -d '{ 
    "posts" : { 
     "properties" : { 
      "name" : { 
       "type" : "string", 
       "analyzer" : "my_analyz_1" 
      }, 
      "message" : { 
       "type" : "string", 
       "analyzer" : "my_analyz_1" 
      } 
     } 
    } 
}' 
echo 
# INSERT 
curl localhost:9200/test/posts/1 -d '{name: "john", message: "hi john"}' 
curl localhost:9200/test/posts/2 -d '{name: "bob", message: "hi john, how are you?"}' 
curl localhost:9200/test/posts/3 -d '{name: "john", message: "bob?"}' 
curl localhost:9200/test/posts/4 -d '{name: "dany", message: "hi bob"}' 
curl localhost:9200/test/posts/5 -d '{name: "dany", message: "hi john"}' 
echo 
# REFRESH 
curl -XPOST localhost:9200/test/_refresh 
echo 
# SEARCH 
curl "localhost:9200/test/posts/_search?pretty=1" -d '{ 
    "query": { 
     "multi_match": { 
      "query": "john", 
      "fields": ["name^2", "message"] 
     } 
    } 
}' 
+0

정말 고마워요! 마술처럼 작동합니다 :). – Tomas

0

필자는이 경우에 해당하는지 확인하지만, 데이터 등의 소량 테스트 할 때, 나는 항상 때문에 분산 계산 아무 문제 없도록 대신 기본 설정 한 파편을 사용하지 마십시오.

관련 문제