私はElasticsearch 5.2
を使用しています。私は1つの文書のみがあるインデックスに対して以下のクエリを実行していElasticsearch wrong explanation validity api
問合せ:
GET test/val/_validate/query?pretty&explain=true
{
"query": {
"bool": {
"should": {
"multi_match": {
"query": "alkis stackoverflow",
"fields": [
"name",
"job"
],
"type": "most_fields",
"operator": "AND"
}
}
}
}
}
ドキュメント:
PUT test/val/1
{
"name": "alkis stackoverflow",
"job": "developer"
}
クエリの説明がある
+(((+job:alkis +job:stackoverflow) (+name:alkis +name:stackoverflow))) #(#_type:val)
私はこれを読んで:フィールドジョブはalkis
とstackoverflow
と フィールド名がalkis
とstackoverflow
を持っている必要があります。これは、しかし、私の文書の場合ではありません持っている必要があります 。私はbest_fields
にタイプを変更すると2つのフィールド間AND
(それは私が取得していた結果から思えるように)実際にOR
ある
は、私が正しい説明はどれ
+(((+job:alkis +job:stackoverflow) | (+name:alkis +name:stackoverflow))) #(#_type:val)
を取得します。
validate apiにバグはありますか?私は何かを誤解したことがありますか?得点がこれらの2つのタイプの唯一の違いではないのですか?
ありがとうございました。デフォルトの演算子が 'OR'の場合、なぜ' best_fields'を使うときに '|'が表示されますか? – alkis
'best_fields'型を使用すると、ESは[dis_max'クエリ](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query)を生成します。 html)ではなく、 '|'(OR !!ではない)の記号は 'dis_max'クエリですべてのサブクエリを区切ります。 – Val
私はいくつかの読書をしているようです。ご協力ありがとうございました。このコメントをあなたの答えに加えてください。これが私の質問を解決したものです。 – alkis