1

それでは始めましょう。約 7.2k のドキュメントを追加しようとしています。問題ありません。問題は、提案を返してもらえなくなった後です。したがって、次のように情報が追加されます。

 def addVariantToElasticSearch(self,docId, companyId, companyName, parent, companyIndustry, variants, count,conn):
    body = { "company":{
                 "company_name": companyName,
                 "parent": parent,
                 "suggest": {   "input": variants,
                                "output": companyName,
                                "weight": count,
                                "payload": {"industry_id": companyIndustry, 
                                            "no_of_jobseekers":count,
                                            "company_id": companyId
                                           } 
                             }
                         }
            }
     res = conn.index(body=body, index="companies", doc_type="company", id=docId)

マッピングと設定は次のように定義されています。

def setting():
 return { "settings" : {
                "index": {
                   "number_of_replicas" : 0,
                   "number_of_shards": 1
            },
            "analysis" : {
                "analyzer" : {
                    "my_edge_ngram_analyzer" : {
                        "tokenizer" : "my_edge_ngram_tokenizer",
                        "filter":["standard", "lowercase"]
                    }
                },
                "tokenizer" : {
                    "my_edge_ngram_tokenizer" : {
                        "type" : "edgeNGram",
                        "min_gram" : "1",
                        "max_gram" : "5",
                        "token_chars": [ "letter", "digit" ]
                    }
                }
            }
        },
        "mappings": {
                "company" : {
                  "properties" : {
                        "name" : { "type" : "string" },
                        "industy": {"type": "integer"},
                        "count" : {"type": "long" },
                        "parent": {"type": "string"},
                        "suggest" : {
                          "type" :     "completion",
                          "index_analyzer": "my_edge_ngram_analyzer",
                          "search_analyzer": "my_edge_ngram_analyzer",
                          "payloads": True
                        }
                  }
                }
          }
    }

索引の作成:

def createMapping(es):
      settings = setting()
      es.indices.create(index="companies", body=settings)

createMappingwhich usesを呼び出してsetting()から、各バリアントを追加します - try,except で囲まれています -> 問題は発生しません。ブラウザーに追加されたすべてのドキュメントを確認できるだけでなく、ステータス、設定、およびマッピングも確認できます。

しかし、以下のように curl リクエストを使用すると、結果が得られません。(以下の curl と出力を参照)

curl -X POST localhost:9200/companies/_suggest -d '
{ 
 "company-suggest" : { 
    "text" : "1800", 
    "completion" : { 
       "field" : "suggest" 
     } 
   } 
 }'

{

  "_shards" : {

    "total" : 1,

    "successful" : 1,

    "failed" : 0

  },

  "suggest" : [ {

    "text" : "ruby",

    "offset" : 0,

    "length" : 4,

    "options" : [ ]

  } ]

現在、ES 1.1.0 を使用しています。Python API 0.4 と 1.1.0 の両方を試してみましたが、うまくいきませんでした (1.1.0 が機能しなかったため、0.4 を試しましたが、ES のバージョンとの互換性の問題により最適ではないことがわかっています)。また、curl を介してマッピングを使用して同じ設定を追加し、上記のこの curl で取得できる会社を追加することもできました。

問題がどこにあるのか正確にはわかりません。ES の Data フォルダーと、ブラウザーが作成されていることを確認しました。また、単一の ES インスタンスのみが実行されていることも確認しました。

どんな助けでも大歓迎です、

4

0 に答える 0