Поле ElasticSearch, отображаемое как неверная строка, вызывает ошибку при поиске

У меня проблема с данными вasticsearch, в основном мне нужно хранить userID, которому принадлежат документы, указанные ниже. Я могу хорошо искать что-нибудь, кроме userID, если я просматриваю данные, в смысле я получаю ошибку «неверная строка» в userID поле.

В чем дело?

   {"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":3,"max_score":1.0,"hits":[{"_index":"pheme","_type":"searches","_id":"AU__X0W7bLxGTuBqZB_E","_score":1.0,"_source":{
userID: "AU__X0W7bLxGTuBqZB_E", **<---- This shows as bad string in Sense**
mustHave: "Laravel",
notHave: "Moogle",
couldHave: "AngularJS",
exclusions: {
ID : ""}
}
},{"_index":"pheme","_type":"searches","_id":"AU__ZNA0bLxGTuBqZCCn","_score":0.30685282,"_source":{
userID: "AU__X0W7bLxGTuBqZB_E",
mustHave: "Laravel",
notHave: "Moogle",
couldHave: "AngularJS",
exclusions: {
ID : ""}
}
},{"_index":"pheme","_type":"searches","_id":"AVAJl5OZbMFoS2ut2YM9","_score":0.30685282,"_source":{
userID: "AU__X0W7bLxGTuBqZB_E",
mustHave: "Laravel",
notHave: "Moogle",
couldHave: "AngularJS",
exclusions: {
ID : ""}
}
}]}}

0

Решение

Хорошо, проблема заключалась в том, как создавались данные, если вы заметили, что в моем примере над именами полей отсутствуют кавычки:

  {"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":3,"max_score":1.0,"hits":[{"_index":"pheme","_type":"searches","_id":"AU__X0W7bLxGTuBqZB_E","_score":1.0,"_source":{
userID: "AU__X0W7bLxGTuBqZB_E", **<---- This shows as bad string in Sense**
mustHave: "Laravel",
notHave: "Moogle",
couldHave: "AngularJS",
exclusions: {
ID : ""}
}
}

ДОЛЖНО БЫТЬ

 {"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":3,"max_score":1.0,"hits":[{"_index":"pheme","_type":"searches","_id":"AU__X0W7bLxGTuBqZB_E","_score":1.0,"_source":{
"userID": "AU__X0W7bLxGTuBqZB_E", **<---- This shows as bad string in Sense**
"mustHave": "Laravel",
"notHave": "Moogle",
"couldHave": "AngularJS",
"exclusions": {
"ID" : ""}
}
}

Важно отметить, что Sense под marvel не мешает вам вставлять недопустимые данные и что Elastic просто выведет эти данные на любой клиент, который вы используете, в PHP это вызовет JsonExceptionError, потому что недопустимый json не может быть закодирован в массив.

Также я неправильно делал отношения родитель / потомок, нет необходимости иметь поле для userID, при вставке записи вы просто указываете родителя, а затем запрашиваете, используя has_parent / filter.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]