私は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" をクエリします。