저는 최근에 Solr로부터 전환 한 것처럼 elasticsearch의 새 관찰자입니다. 나는 이제 내 solrconfig의 edismax 쿼리를 elasticsearch와 함께 작동하도록 변환하려고 시도 중이다.dis-max-query와 관련하여 minimum_should_match
는 기본적으로 나는 용어가 한 번에 두 필드에 검색 할 할, 그래서이 쿼리에 결국 : 이것은 하나의 용어와 함께 잘 작동
{
"query": {
"dis_max": {
"queries": [
{
"match": {
"field_1": {
"query": "term1"
}
}
},
{
"match": {
"field_2": {
"query": "term1"
}
}
}
]
}
}
}
. 여러 용어가있는 경우 각 용어를 찾을 필요는 없습니다. 그러나이 기능을 구현할 방법을 찾지 못했습니다. 이것이 minimum_should_match 매개 변수에 대한 것이고 bool query에 의해 제공됩니다.
세 가지 용어가 있는데 두 가지 이상을 찾아야합니다. 시행 착오를 통해 내가 이런 일을 포함 변종의 많은 선택 :
{
"query": {
"dis_max": {
"queries": [
{
"match": {
"field_1": {
"query": "term1 term2 nonexistingterm",
"operator": "and",
"minimum_should_match": 2
}
}
},
{
"match": {
"field_2": {
"query": "term1 term2 nonexistingterm",
"operator": "and",
"minimum_should_match": 2
}
}
}
]
}
}
}
그러나 minimum_should_match
여기서 일하지 않습니다, 인해 and
운영자에게 어떤 결과를 찾을 수 없습니다. or
과 함께 작동하지 않습니다. 결과를 반환하는 데는 하나의 조회만으로 충분하지 않습니다.
누군가 dis_max
과 minimum should match
을 결합 할 수 있습니까?
나는 이것에 대한 문서를 찾을 수 없으므로 elasticsearch에서 이러한 정보를 찾을 수있는 힌트를 얻으실 수 있습니다.
나는 이미'또는'로 시도한 것이 무슨 뜻인지 잘 모르겠습니다. 아래 쿼리는 테스트에서 올바르게 작동하는 것 같습니다. 작동하지 않는 경우 설정에 대한 세부 정보가 필요할 수 있습니다. – femtoRgon
이 내 설정은 다음과 같습니다 "버전": { "수": "1.0.0", "build_hash": "a46900e9c72c0a623d71b54016357d5f94c8ea32" "build_timestamp": "2014-02-12T16 : 18 : 34Z" " "build_snapshot": false, "lucene_version": "4.6" , – linqu