私は現在、solrベースのアプリケーションをelasticsearchに移行しようとしています。
私はこのルセンのクエリを持っています
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
私が理解している限り、これはブール句ORと組み合わせたMUST句の組み合わせです:
「(fooとbarの名前)または(fooとbar in info)を含むすべてのドキュメントを取得します。その後、条件state = 1で結果をフィルタリングし、画像のあるドキュメントをブーストします。」
Mustでブールクエリを使用しようとしていますが、ブールORをmust句に取得できません。ここに私が持っているものがあります:
GET /test/object/_search
{
"from": 0,
"size": 20,
"sort": {
"_score": "desc"
},
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
},
{
"match": {
"name": "bar"
}
}
],
"must_not": [],
"should": [
{
"match": {
"has_image": {
"query": 1,
"boost": 100
}
}
}
]
}
}
}
ご覧のとおり、 "info"のMUST条件がありません。
誰かが解決策を持っていますか?
どうもありがとうございます。
**更新**
elasticsearchクエリを更新し、その関数スコアを削除しました。私の基本的な問題はまだ存在しています。