7

私はelasticsearchで索引付けされたドキュメントを持っています:

{
    "content":"Some content with @someone mention",
    "mentions":["someone"],
    "userId":"4dff31eaf8815f4df04e2d62"
}

私はクエリでそれを見つけようとします:

{
    "query": {
        "filtered": {
            "filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
            "query": {
                term: {"mentions":"someone"}
            }
        }
    }
}

結果を受け取りません。

同時に、コンテンツのクエリは正常に機能します。

{
    "query": {
        "filtered": {
            "filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
            "query": {
                "term": {"content":"some"}
            }
        }
    }
}

配列の検索には特別な構文が必要ですか? Elasticsearchで配列に関するいくつかのトピック [1、2] を見つけましが、直接的な答えはありません。

UPD Get Mapping 呼び出しは次の結果を返します。

{
    "records": {
        "all":{
            "properties":{
                "content":{"type":"string"},
                "userId":{"type":"string"},
                "mentions":{"type":"string"}
            }
        }
    }
}

UPD2問題の原因が見つかりました。誤って質問に誤りを入れてしまいました。私が実際にDBに持っていたユーザー名は、「some_one」の形式でした(アンダースコアは重要です)。したがって、標準のインデックスはそれを 2 つの単語に分割し、失敗の原因の "some_one" をクエリします。

4

1 に答える 1

2

アップデートで言及されているように、これは正しい使用法です。

「メンション」配列を含むドキュメントをインポートする場合、「メンション」として参照する一致する配列アイテムを検索すると、ドキュメントが取得されます。私は同じ問題を抱えていて、今それを自分で確認しました。

于 2012-08-10T16:51:43.397 に答える