2017-10-16 6 views
0

_allとのマルチマッチング方法を知りたかったのです。さんは、私は次のクエリを持っているとしましょう:_allとelasticsearchマルチマッチングはどのように機能しますか?

"multi_match": { 
            "query": x, 
            "type": "phrase", 
            "fields":"_all", 
           } 

それは特定のフレーズのために利用可能なすべてのフィールドを検索し、フレーズはすべてのフィールドに存在する場合、レコードを返していますか?フィールドの一部にそれがあり、他のフィールドでそうでない場合はどうなりますか?

答えて

0

_allフィールドは一つの大きな文字列にすべてのフィールドを連結し、それを分析するだけの場です標準的な方法で定義されていない場合 - PARAM「include_in_all」https://www.elastic.co/guide/en/elasticsearch/reference/current/include-in-all.html

だから、それはあなたのすべてのフィールドの連結上のフレーズクエリを使用しても意味がないと、あなたのマッピングを定義しながら、https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html

その可能性が_allフィールドからいくつかのフィールドを削除するには?むしろ。私はmult_matchを使って、_allフィールドと同じような目標を達成することができます.-> 1つのクエリで複数のフィールドを検索できます。しかし、すべてのフィールドを使用する場合は、単に '一致'クエリを使用できます。

0

(6.0で削除された)_allフィールドインデックス彼らが登場どんなフィールドあなたのJSONドキュメントからすべての値。

+0

ありがとうございます@dadoonetご意見ください。しかし、2つのフィールドだけを指定して同じクエリを使用すると、私が取得するレコードの数は、_allを実行するときのレコードの数よりも多いのですか?たとえば、もし私が_allを使うと100個のレコードが返ってきますが、 "fields"を使うと:["title"、 "description"] 101レコードが得られ、86レコードだけが複製されます。 – Mandy

関連する問題