問題タブ [elasticsearch-query]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
304 参照

python - Elasticsearch の GroupBy 集計での複数の範囲の合計

次のマッピングは、別のフィールドを使用してドキュメントをグループ化するフィールドの複数のレベルで集約されます。

マッピング:

私の要件は少し複雑です。

  1. Empごとに(個別の従業員を取得する)
  2. オンライン取引か現金取引かを確認する
  3. 0 ~ 10、11 ~ 20、21 ~ 30 などの範囲のアイテムでグループ化します。
  4. 金額を合計する

最終出力は次のようになります。

0 投票する
1 に答える
1558 参照

elasticsearch - ワード カウント用の Elasticsearch クエリ フィルター

現在、特定のフィールドに最大 n 個の単語を含むドキュメントを返す方法を探しています。

「name」フィールドに 3 単語未満のドキュメントを含む結果セットの場合、クエリは次のようになりますが、私の知る限り、word_count のようなものはありません。

おそらく別の方法で、これを処理する方法を知っている人はいますか?

0 投票する
2 に答える
11042 参照

elasticsearch - フレーズ マッチングを使用した Edge NGram

フレーズをオートコンプリートする必要があります。たとえば、「dementia in alz」を検索すると、「dementia in alzheimer's」が表示されます。

このために、Edge NGram tokenizerを構成しました。クエリ本文のアナライザーとしてと の両方edge_ngram_analyzerを試しました。standardそれにもかかわらず、フレーズを一致させようとすると結果が得られません。

私は何を間違っていますか?

私のクエリ:

私のマッピング:

私の文書:

「アルツハイマーの認知症」というフレーズの分析:

0 投票する
1 に答える
90 参照

elasticsearch - Elasticsearch の同じクエリで `gt` と `fields` を使用する方法

以前の質問fieldsで、クエリ内のquery_stringと、それがドキュメントのネストされたフィールドの検索にどのように役立つかを紹介しました。

しかし、それはマッチングに対してのみ機能します。比較を行いたい場合はどうすればよいですか? いくつかの読み取りとテストの後、次のようなクエリrangeはサポートしていないようですfieldsrangeドキュメント階層のどこにでも散らばっている可能性のあるフィールドに対して、日付などのクエリを実行する方法はありますか?

つまり、次のドキュメントを検討してください。

ネストされたフィールドのために、アドレスを明示的に指定せずに、指定されたドキュメントに一致するdateフィールド ( など) を検索するクエリはありますか? このようなもの(次のクエリが間違っていることはわかっています):date > '2016-08-16T16:00:00.000000'Reply.date

0 投票する
1 に答える
259 参照

elasticsearch - Elasticsearch のフィールド全体ではなく、フィールドの文字列の一部でグループ化する

ここに私のインデックスの構造:

次のような各シリーズの「PlayCount」の合計をもたらす集計を実行したいと思います。

これは私がやろうとする方法ですが、これは適切な方法ではないため、明らかにクエリは失敗します:

それを行う方法はありますか?

0 投票する
1 に答える
678 参照

python - Elasticsearch 修正日付フィールドの値。(フィールド値を int から string に変更)

私はmongodbからelasticsearchへのpython船データを使用しました。

という名前のタイムスタンプ フィールドがあり、次のupdate_timeようにマッピングされます。

epoch_millis タイムスタンプに使用されます。

すべてが完了したらrange、日付範囲でドキュメントをクエリしていました。しかし、何も返されません。いくつかの調査の後、問題は次のとおりだと思いました: python タイムスタンプint(time.time())は 10 桁ですが、elasticsearch では 13 桁です。公式の例:

PUT my_index/my_type/2?timestamp=1420070400000.

そのため、update_time フィールドを 1000 の倍数で更新しようとしました。

残念ながら、すべてupdate_timeマイナスになっていることがわかりました。pow(2,32) -1次に、Java int 型がであり、 よりもはるかに低いことを思いつきました1420070400000。それで、タイムスタンプフィールドは int であってはならないと思いますか?

次に、フィールド値を int から string に更新したい (フィールド マッピング タイプを変更したくない。マッピング タイプの変更には再インデックスが必要であることはわかっているが、ここでは値の変更のみが必要である)

しかし、使用できるスクリプトがわかりません。公式のスクリプトドキュメントにはこれについて言及されていません