我使用Elasticsearch 2.4.3在我的春節,啓動應用程序和使用下面的查詢Elasticsearch的Java API - 布爾查詢操作
QueryBuilder qb = new BoolQueryBuilder()
.must(QueryBuilders.multiMatchQuery(term, "phoneticFirstName", "phoneticLastName", "phoneticLocationName", "phoneticCompanyName")
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND))
.must(QueryBuilders.multiMatchQuery(term, "ngramFirstName^3", "ngramLastName^3", "ngramLocationName^3", "ngramCompanyName^3", "_all")
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND));
我想要得到的響應,其中,第一查詢或第二查詢獲得的點擊....你能幫我在我的守則中改變嗎?
UPDATE
"atsCustomPhoneticAnalyzer":{
"type":"custom",
"tokenizer":"whitespace",
"filter":["lowercase","asciifolding","atsPhoneticFilter"]
},
"atsCustomSearchAnalyzer":{
"type":"custom",
"tokenizer":"whitespace",
"filter":["lowercase","asciifolding","umlautStemmer","germanStemmer"]
}
更新#2
QueryBuilder qb = new BoolQueryBuilder()
.should(QueryBuilders.multiMatchQuery(term, "ngramFirstName", "ngramLastName", "ngramLocationName", "ngramCompanyName")
.type(Type.CROSS_FIELDS)
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND)
.boost(3))
.should(QueryBuilders.multiMatchQuery(term, "phoneticLastName")
.analyzer("atsCustomPhoneticAnalyzer")
.operator(Operator.AND))
.should(QueryBuilders.matchQuery(term, "_all")
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND))
.minimumNumberShouldMatch(1);
我有2個指標:人員和活動。當我註釋掉第二個查詢時,我會從人員和活動中獲得點擊。如果所有3個查詢都存在,活動中的點擊不再存在......
任何想法?
變化'must'與'should'代替,並添加'minimumShouldMatch(1)' – Val
謝謝瓦爾,它的作品!但我的Koelnerphonetic查詢將無法正常工作:(它處理諸如「邁爾/邁爾/梅爾/邁爾」這樣的事情,並說這些是聽起來一樣...在我的問題,我已經更新了我的映射/設置 –
好吧, nvm .....我剛剛在第一個查詢中使用了錯誤的分析儀 –