elasticsearch APIを介してquery string queryが実際にどのように解析されているかを調べる方法はありますか? lucene query syntaxを見ることで手動で行うことができますが、パーサが実際に行っている結果を表示することができれば本当にうれしいでしょう。elasticsearchの結果を調べるにはどうすればquery_stringを解析できますか?
8
A
答えて
5
javannaがコメントで述べたように、_validate apiがあります。ここに私の地元の弾性(バージョン1.6)にどのような作品です:
curl -XGET 'http://localhost:9201/pl/_validate/query?explain&pretty' -d'
{
"query": {
"query_string": {
"query": "a OR (b AND c) OR (d AND NOT(e or f))",
"default_field": "t"
}
}
}
'
pl
は私のクラスタ上のインデックスの名前です。異なるインデックスにはアナライザが異なる可能性があります。そのため、クエリの検証はインデックスのスコープ内で実行されます。
上記カールの結果は以下の通りです:
{
"valid" : true,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"explanations" : [ {
"index" : "pl",
"valid" : true,
"explanation" : "filtered(t:a (+t:b +t:c) (+t:d -(t:e t:or t:f)))->cache([email protected]f1)"
} ]
}
私はわざと1つのOR
小文字を作って、あなたが説明に見ることができるように、それはトークンとしてではなく演算子として解釈されます。
説明の解釈について。フォーマットはquery string
クエリの+-
operatorsのようになります。
- (と)の文字が起動し、
bool query
- +を終了プレフィックスは
must
- になります句を意味します - プレフィックスは
must_not
になります句を意味し、
- 接頭辞は、それが
should
にあることを意味する(default_operator
はOR
に等しい)
したがって、上記の次と同等になります。
{
"bool" : {
"should" : [
{
"term" : { "t" : "a" }
},
{
"bool": {
"must": [
{
"term" : { "t" : "b" }
},
{
"term" : { "t" : "c" }
}
]
}
},
{
"bool": {
"must": {
"term" : { "t" : "d" }
},
"must_not": {
"bool": {
"should": [
{
"term" : { "t" : "e" }
},
{
"term" : { "t" : "or" }
},
{
"term" : { "t" : "f" }
}
]
}
}
}
}
]
}
}
私は多くの条件での複雑なfiltered
クエリをデバッグするのは非常に重く_validate
APIを使用していました。これは、URLのようなアナライザのトークン化された入力がどのようにキャッシュされているかをチェックしたい場合に特に便利です。
これまで私が気づいていなかった素晴らしいパラメータrewrite
もあります。これにより、実行される実際のLuceneクエリの説明がさらに詳細になります。
関連する問題
- 1. PHPでFoursquare API呼び出しの結果を解析するにはどうすればよいですか?
- 2. カーソルに結果があるかどうかを調べる
- 3. ファイルをアップロードし、json結果を解析することはできますか?
- 4. JSONの結果を解析する
- 5. 春のストアドプロシージャ、結果を解析する
- 6. phpunitでPHP解析エラーを調べる
- 7. どうすればこのようなデータを解析できますか?
- 8. グリッドビュー内のテキストの結果を強調表示するにはどうすればよいですか?
- 9. iOS - Facebook SDK、結果を解析する
- 10. 検索結果を解析する
- 11. IntelliJ IDEAでSonarLintの解析結果をクリアするには
- 12. Cassandra cqlの結果を表示するにはどうすればよいですか?私はJSONを解析する必要がありますか?
- 13. PHPはXMLファイルで単一の結果を解析します
- 14. 次の結果はどのように解決できますか?
- 15. jQueryを使ってJsonの結果を解析するには
- 16. Jsonチャックの解析結果
- 17. shootout.alioth.debian.orgの結果をどのように解釈しますか?
- 18. Rubyオブジェクトのメソッドを調べるにはどうすればよいですか?
- 19. 特定のデータを調べるにはどうすればいいですか
- 20. ハッシュの意味を調べるにはどうすればいいですか?
- 21. Chromeプラグインのソースコードを調べるにはどうすればよいですか?
- 22. NHibernateクラスのマッピングを調べて、どのエンティティが別のエンティティを参照できるかを調べるにはどうすればよいですか?
- 23. IOSデバッガでサブビュープロパティを調べるにはどうすればいいですか
- 24. iPhoneでXMLを解析するにはどうすればよいですか?
- 25. アクションスクリプトでJSONを解析するにはどうすればよいですか?
- 26. クライアントサイドスクリプトでhtmlを解析するにはどうすればよいですか?
- 27. GsonでGeoJsonを解析するにはどうすればよいですか?
- 28. PHPでXMLを解析するにはどうすればよいですか?
- 29. RailsでHTMLを解析するにはどうすればよいですか?
- 30. jquery json結果の結果を表示するにはどうすればいいですか?
Explain出力を有効にしようとしましたか?検索要求にexplain = trueを追加しましたか? – javanna
@javanna explain = trueの目的は個々の結果の評価を説明することだけであり、何が起こっているのかを少し推測するのに役立ちます。しかし、私は何か明示的に、特に複雑な場合には、それを好むでしょう。 –
さて、[validate query api](http://www.elasticsearch.org/guide/reference/api/validate/)を見て、ここで説明を使用すると、より良くなるはずです。 – javanna