問題タブ [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.
python - Elasticsearch の GroupBy 集計での複数の範囲の合計
次のマッピングは、別のフィールドを使用してドキュメントをグループ化するフィールドの複数のレベルで集約されます。
マッピング:
私の要件は少し複雑です。
- Empごとに(個別の従業員を取得する)
- オンライン取引か現金取引かを確認する
- 0 ~ 10、11 ~ 20、21 ~ 30 などの範囲のアイテムでグループ化します。
- 金額を合計する
最終出力は次のようになります。
elasticsearch - ワード カウント用の Elasticsearch クエリ フィルター
現在、特定のフィールドに最大 n 個の単語を含むドキュメントを返す方法を探しています。
「name」フィールドに 3 単語未満のドキュメントを含む結果セットの場合、クエリは次のようになりますが、私の知る限り、word_count のようなものはありません。
おそらく別の方法で、これを処理する方法を知っている人はいますか?
elasticsearch - フレーズ マッチングを使用した Edge NGram
フレーズをオートコンプリートする必要があります。たとえば、「dementia in alz」を検索すると、「dementia in alzheimer's」が表示されます。
このために、Edge NGram tokenizerを構成しました。クエリ本文のアナライザーとしてと の両方edge_ngram_analyzer
を試しました。standard
それにもかかわらず、フレーズを一致させようとすると結果が得られません。
私は何を間違っていますか?
私のクエリ:
私のマッピング:
私の文書:
「アルツハイマーの認知症」というフレーズの分析:
elasticsearch - Elasticsearch の同じクエリで `gt` と `fields` を使用する方法
以前の質問fields
で、クエリ内のquery_string
と、それがドキュメントのネストされたフィールドの検索にどのように役立つかを紹介しました。
しかし、それはマッチングに対してのみ機能します。比較を行いたい場合はどうすればよいですか? いくつかの読み取りとテストの後、次のようなクエリrange
はサポートしていないようですfields
。range
ドキュメント階層のどこにでも散らばっている可能性のあるフィールドに対して、日付などのクエリを実行する方法はありますか?
つまり、次のドキュメントを検討してください。
ネストされたフィールドのために、アドレスを明示的に指定せずに、指定されたドキュメントに一致するdate
フィールド ( など) を検索するクエリはありますか? このようなもの(次のクエリが間違っていることはわかっています):date > '2016-08-16T16:00:00.000000'
Reply.date
elasticsearch - Elasticsearch のフィールド全体ではなく、フィールドの文字列の一部でグループ化する
ここに私のインデックスの構造:
次のような各シリーズの「PlayCount」の合計をもたらす集計を実行したいと思います。
これは私がやろうとする方法ですが、これは適切な方法ではないため、明らかにクエリは失敗します:
それを行う方法はありますか?
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 に更新したい (フィールド マッピング タイプを変更したくない。マッピング タイプの変更には再インデックスが必要であることはわかっているが、ここでは値の変更のみが必要である)
しかし、使用できるスクリプトがわかりません。公式のスクリプトドキュメントにはこれについて言及されていません