0

コレクションユーザーがいて、すべてのドキュメントは次のような構造になっています:

{
  "username": "de",
  "userId": 123456,
  "followers":[
    {
      "userId":123,
      "username": "bc",
    },
    {
      "userId": 456,
      "username": "ac",
    }
}

その他のドキュメント:

{
  "username": "a",
  "userId": 123456,
  "followers":[
    {
      "userId": 456,
      "username": "ab",
    }
}

「ユーザー名」フィールドにインデックスを付けたい(フォロワーではなく親)。私は次のようにします:

curl -XPUT http://localhost:9200/users -d '
{  
   "mappings":{
      "multisearch":{
         "properties":{
            "username":{
                 "type":"string",
                 "analyzer":"partial_name",
                 "search_analyzer":"partial_name",
                 "index_analyzer":"partial_name"
               }
            }
          }
      },
         "settings":{
            "analysis":{
               "filter":{
                  "name_ngrams":{
                     "side":"front",
                     "max_gram":20,
                     "min_gram":2,
                     "type":"NGram"
                  }
               },
               "analyzer":{
                  "full_name":{
                     "filter":[
                        "standard",
                        "lowercase",
                        "asciifolding"
                     ],
                     "type":"custom",
                     "tokenizer":"standard"
                  },
                  "partial_name":{
                     "filter":[
                        "standard",
                        "lowercase",
                        "asciifolding",
                        "name_ngrams"
                     ],
                     "type":"custom",
                     "tokenizer":"standard"
                  }
               }
            }
         }
}'

そして、elasticsearch に新しい mongodb リバーを追加します。

curl -XPUT 'localhost:9200/_river/mongodb/_meta' -d '{
    "type": "mongodb",
    "mongodb": {
        "servers": [
            {"host": "Konoha", "port": 27018},
            {"host": "Konoha", "port": 27027}
        ],
        "db": "mydatabase",
        "collection": "users",
        "options": {
            "secondary_read_preference": true,
            "drop_collection": true
        },
        "gridfs": false
    },
    "index": {
        "name": "users",
        "type": "multisearch"
    }
}'

そして今、キーワード「manh」で検索しようとすると、ブラウザで実行します:

http://localhost:9200/users/multisearch/_search?pretty=true&q=username:abc

その結果が、上で説明した 2 つのドキュメントです。ElasticSearchはフォロワーフィールドのフィールドユーザー名もインデックス化すると思いますか?

ユーザー名= abc(親)を持つ行のみが必要です

親フィールドのユーザー名のみのインデックス作成を手伝ってもらえますか?

助けてくれてありがとう:)

映画トレントのダウンロード

4

0 に答える 0