21

spring-data-elasticsearch フレームワークを使用して、elasticsearch サーバーからクエリ結果を取得します。Java コードは次のようになります。

SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery()).withSearchType(SearchType.COUNT)
.addAggregation(new MinBuilder("min_createDate").field("createDate"))
.build();

List<Entity> list = template.queryForList(searchQuery, Entity.class);

Elasticssearchサーバーに送信された生のhttpクエリをどのように知ることができますか? ロギングを有効にするにはどうすればよいですか。log4j を追加しようとしましたが、spring-data-elasticsearch がクエリをログに記録していないようです。

4

7 に答える 7

10

スプリング ブートを使用している場合は、application.properties で次のように設定できます。

logging.level.org.elasticsearch.index.search.slowlog.query=INFO
spring.data.elasticsearch.properties.index.search.slowlog.threshold.query.info=1ms
于 2015-06-18T15:39:15.780 に答える
9

Spring Data Elasticsearch に対する答えはありませんが、ES 自体では、スロー クエリ ロギングのデフォルト設定を上げて、スロー ログ内のすべてのクエリを表示できます。スローログの詳細については、こちら を参照してください

しきい値を変更する方法については、次のようなコマンドを使用する必要があります。

PUT /_settings
{
  "index.search.slowlog.threshold.query.info": "1ms"
}

1ms設定できる最小値です。

于 2015-06-07T11:10:14.477 に答える
0

@AndreiStefan に私の 2 セントを追加するだけです:0msの代わりに設定できるようになり1msました。この方法を使用すると、いくつかの非常に高速なクエリをキャプチャできるようです。

単に行う:

PUT /_settings
{
  "index.search.slowlog.threshold.query.info": "0ms"
}
于 2021-03-10T06:41:35.970 に答える