2017-02-10 10 views
3

Я пытаюсь реализовать выбор пользователей из данного колледжа и имени. Здесь имя имеет нечеткий запрос. Ниже приведен запрос в упругом поиске (v5.1.2), который дает мне желаемый результат. Но дает ошибку в JavaBool запрос с нечеткостью в эластичном поиске java client

{ 
    "query" : { 
     "bool": { 
      "must" : [{ 
       "match": { 
        "collegeAccountCode": "DIT" 
       } 
      }, 
      { 
       "match": { 
        "name" : { 
         "query": "Rahul", 
         "fuzziness" : "AUTO" 
        } 
       } 
      }] 
     } 
    } 
} 

Я пытался реализовать эту используя следующий Java API (V5.1.2)

QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", studentName).fuzziness()) 
      .must(QueryBuilders.matchQuery("collegeAccountCode", AccountId)); 

Но я получаю сообщение об ошибке сказав:

"The method must(QueryBuilder) in the type BoolQueryBuilder is not applicable for the arguments 
(Fuzziness)" 

Как исправить эту ошибку или есть ли другой способ реализовать этот запрос?

ответ

2

Проблема заключается в том, что метод fuziness() без параметров возвращает текущее Fuzziness, который, очевидно, не ожидается must(), и вам нужно сделать что-то вроде этого:

QueryBuilders.boolQuery() 
       .must(QueryBuilders.matchQuery("name", "Rahul").fuzziness(Fuzziness.AUTO)) 
       .must(QueryBuilders.matchQuery("collegeAccountCode", "DIT")); 

Кусок кода, объясняющую проблема немного больше:

/** Sets the fuzziness used when evaluated to a fuzzy query type. Defaults to "AUTO". */ 
    public MatchQueryBuilder fuzziness(Object fuzziness) { 
     this.fuzziness = Fuzziness.build(fuzziness); 
     return this; 
    } 

    /** Gets the fuzziness used when evaluated to a fuzzy query type. */ 
    public Fuzziness fuzziness() { 
     return this.fuzziness; 
    } 

Вы вызвали второй метод, в то время как вам нужно позвонить первому.

+0

Большое спасибо. Я никогда не думал, что это может быть проблемой. Вы объяснили это довольно хорошо. –

+0

Также он говорит по умолчанию AUTO, поэтому я предположил, что мне не нужно давать никаких аргументов. –

 Смежные вопросы

  • Нет связанных вопросов^_^