私は弾性検索を使用して始めました。私はすべてが正しくセットアップされている。私はFirebase + Flashlight + Elastic Searchを使用しています。奇妙な出力クエリ弾性検索
私のフロントエンドでは、私は異なる検索のparamsに基づいてクエリを構築しています。 Firebase /search/requests/
のノードにそれらを挿入します。懐中電灯はこれをピックアップし、応答を/search/response
に入れます。これは魅力的です!
ただし、クエリを正しく記述する方法がわかりません。私は2つのmust
match
のクエリを組み合わせようとすると、奇妙な結果を得ています。私はQuery DSLを使用しています。 deliverables/doc
下
弾性検索で私の文書には、次のスキームを持っています。
...
{
"createdBy" : "[email protected]",
"createdOn" : 1501200000000,
"deadLine" : 1508716800000,
"description" : {
"value" : "dummy description"
},
"key" : "<FBKEY>",
"programmes" : [ {
"code" : "95000",
"name" : "Test programme",
"programYear" : 2017
} ],
"projects" : [ {
"projectCode" : "113200",
"projectName" : "Test project",
"projectYear" : 2017
} ],
"reportingYear" : 2017,
"status" : "Open",
"type" : "writing",
"updatedBy" : "[email protected]",
"updatedOn" : 1501200000000,
},
...
クエリの構造は次のとおりです。
{
"query": {
"bool": {
"must": [
{
"match": {
"createdBy": "[email protected]"
},
"match": {
"programmes.code": "95000"
}
}
]
}
}
}
私の出力には、正確には2つのフィールドがないドキュメントもありますか?彼らのスコアも非常に低いです。これは正常ですか?
:私のマッピング、自動的しかし、それはまだ私の両方のフィールドにフィルタリングしないことによって、奇妙な結果を与える、私はこのクエリを試してみました懐中電灯
アップデート1
を使用して作成must
句がに使用
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"programmes.code": "890000"
}
},
{
"match": {
"createdBy": "[email protected]"
}
}
]
}
}
}
}
}
チャンドラさんありがとうございました!どのように私はそれを逃した可能性があります... – Rover
私はこのクエリを試しましたが、それでも私は両方のフィールドでフィルタリングしないことによって私に奇妙な結果をもたらします。開始ポストの更新を参照してください – Rover
あなたはフィールドを分析しないように 'match'を' term'に置き換えることができます。 –