これは私には明白ですが、そうではありません。次の2つは2番目のフェーズ(この場合、Cape Basin
)
"query": {
"match_phrase": {
"contents": {
"query": "St Peter Fm",
"query": "Cape Basin"
}
}
}
"query": {
"match_phrase": {
"contents": {
"query": ["St Peter Fm", "Cape Basin"]
}
}
}
エラーで次の鳴き声
"query": {
"match_phrase": {
"contents": {
"query": "St Peter Fm"
},
"contents": {
"query": "Cape Basin"
}
}
}
入力したとおりにどちらかフレーズを含むすべてのドキュメントを照合します。
同じフィールド名を2回使用するため、最初のクエリは実際には有効なJSONオブジェクトではありません。
bool must query を使用して、両方のフレーズを照合できます。
PUT phrase/doc/1
{
"text": "St Peter Fm some other text Cape Basin"
}
GET phrase/_search
{
"query": {
"bool": {
"must": [
{"match_phrase": {"text": "St Peter Fm"}},
{"match_phrase": {"text": "Cape Basin"}}
]
}
}
}
multi_match
の句のセマンティクスを有効にすることでこれを実行できることがわかりました。
これを行うには、以下のようにtype:
属性をmulti_match
構文に追加します。
GET /_search
{
"query": {
"multi_match" : {
"query": "quick brown fox",
"type": "phrase",
"fields": [ "subject", "message" ]
}
}
}
そのように考えると(他の検索句で「マルチ」サポートを有効にするのではなく)、期待したとおりに収まります。