問題タブ [elasticsearch-mapping]

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 に答える
2205 参照

elasticsearch - Elasticsearch は空の文字列を null と見なしますか?

Elasticsearch が空の文字列を null 値と見なすかどうかを知りたいのですが、以下に示すマッピングに基づいて、それが行われていることがわかりません。nullによって提供される値を使用して、elasticsearch に空の文字列を およびインデックスと見なさせるにはどうすればよいですかnull_value。私のマッピングを以下に示します。

前もって感謝します。

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

elasticsearch - Elasticsearch 2.3 put マッピング (日付フィールドタイプをオーバーライドしようとしています) エラー

文字列として保存したい生年月日がいくつかあります。データに対してクエリや分析を行う予定はありません。データを保存したいだけです。

私が与えられた入力データは、さまざまなランダムな形式であり、一部には のような文字列が含まれています(approximate)。Elastic は、これが日付形式の日付フィールドである必要があると判断しました。つまり、Elastic が異常に日付を受け取る1981 (approx)と、入力が無効な形式であると表示されます。

入力日付を変更する代わりに、日付タイプを文字列に変更したいと考えています。

ドキュメントを確認し、PUTマッピング API を使用してマッピングを更新しようとしましたが、エラスティックが解析エラーを返し続けます。

ここのドキュメントに基づいています:

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html

私が試してみました:

しかし、戻ります:

質問のまとめ

エラスティックサーチの自動的に決定された日付フィールドをオーバーライドして、フィールド タイプとして文字列を強制することは可能ですか?

ノート

リクエストを送信するためにGoogle Chromeセンスプラグインを使用しています

エラスティック検索のバージョンは 2.3 です

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

java - ElasticSearch でスコアが表示されないのはなぜですか?

Ubuntu 16.04 で ElasticSearch 2.3.1 を使用しています。

マッピングは次のとおりです。

クエリは次のとおりです。

14567 個のドキュメントが見つかりましたが、スコアは常に "_score": 0

フィルターにはスコアがあると読んだので、この場合はなぜですか?

ありがとうございました!

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

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

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

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

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

私のクエリ:

私のマッピング:

私の文書:

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

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

elasticsearch - エラスティック検索で文字列を分割するためのマッピング アナライザー

文字数に基づいて文字列を小さな部分に分割するためのマッピング アナライザーを作成することは可能ですか?

たとえば、「ABCD1E2F34」という文字列があるとします。これは、複数の小さなコードから構築されたトークンであり、それらのコードにもう一度分解したいと思います。

- 最初のコードは常に 4 文字 ("ABCD") - 2 番目は 3 文字 ("1E2") - 3 番目は 1 文字 ("F") - 4 番目は 2 文字 ("34")

このように文字列をマッピングするフィールドのマッピング アナライザーを作成できますか? フィールド「bigCode」に値「ABCD1E2F34」を設定すると、次のようにアクセスできます。

どうもありがとう!

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

elasticsearch - Elasticsearch 動的タイプおよび not_analyse フィールド

私が持っているように、私はこのような動的テンプレートを作成しましたdynamic types:

文書例:

このテンプレートを変更して、値を持つtest_idフィールドとbranch_idフィールドがインデックス化または分析されないようにする方法は? not_analyzed値が配列とオブジェクトの配列の場合に機能しますか?

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

elasticsearch - elasticsearch マッピング アナライザー - GET で結果が得られない

特殊文字を空白に置き換えて大文字に変換するアナライザーを作成しようとしています。その後、小文字で検索したい場合も機能するはずです。

マッピング アナライザー:

特殊文字を空白に置き換えることで、単語を適切にトークン化しています。テキストから単語を検索しても、結果が得られません。

上記の GET クエリから結果が得られません。次のような結果を得る:

誰でもこれで私を助けることができます! ありがとうございました!

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

node.js - Base64を使用せずにElasticSearchでバイナリファイルにインデックスを付ける方法

NodeJSelasticsearchパッケージを使用して ElasticSearch とやり取りしています。フィールドを持つドキュメントがありfileます。ファイルをインデックスにアップロードできるようにしたいのですが、私が見つけた唯一の方法は、elasticsearch-mapper-attachment プラグインを使用することです。

問題は、それを使用する場合、ファイル全体をメモリにロードし、Base64 にエンコードしてから、String を ElasticSearch に渡す必要があることです。

Stream を ElasticSearch に渡すことができるようにしたいと思います (任意のバイナリ ファイルを参照します: pdf、xls、doc、ppt)。

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

elasticsearch - Elasticsearch でフィールドがインデックスではなくタイプで指定されるのはなぜですか?

Elasticsearch インデックス内の複数のタイプに同じ名前のフィールドがある場合、それらのフィールドには、文字列と long の両方として「foobar」プロパティを作成しようとする同じマッピングが必要です...

たとえば、次のインデックス マッピングを PUT しようとすると:

...次のエラーが返されます

以下はelasticsearchサイトからのものです:

異なる型のフィールド間の競合

2 つの異なる型の同じ名前を持つ同じインデックス内のフィールドは、同じフィールドによって内部的にサポートされているため、同じマッピングを持つ必要があります。複数のタイプに存在するフィールドのマッピング パラメーターを更新しようとすると、update_all_types パラメーターを指定しない限り、例外がスローされます。この場合、同じインデックス内の同じ名前を持つすべてのフィールドでそのパラメーターが更新されます。

同じ名前のフィールドがインデックス内のすべての型に対して同じマッピングを持つ必要がある場合、型ごとにフィールド マッピングが指定されるのはなぜですか? インデックス全体のフィールドを指定してから、各タイプに割り当てられているフィールドを特定してください。

たとえば、次のようなものです。

このようなマッピング形式は、より簡潔で、実際に許可されているものをより適切に表現するものではないでしょうか?

私が尋ねる理由は、15 の型で使用される約 80 の異なるフィールドを持つインデックス テンプレート JSON ファイルの作成に取り組んでいるためです。フィールドの多くは、すべてではないにしても複数のタイプで使用されます。そのため、フィールドを更新する必要があるときはいつでも、それが使用されているすべてのタイプに対して更新する必要があります。