Мой маппинг:
{
"city": {
"mappings": {
"nms": {
"properties": {
"post": {
"type": "long"
},
"area": {
"type": "long"
},
"segm": {
"type": "text"
}
}
Этот запрос не находит ни один документ:
GET products_v19/_search/
{
"query": {
"exists" : { "field" : "segm" }
}
}
Почему?
И как совмещать вместе любой запрос с этим? Как раньше, когда был "filter"
Я написала вымышленный маппинг, и искомое поле nested. Это может быть проблемой?
Спасибо.
Вы не могли бы показать полный пример с созданием индекса, добавлением записи и поиском, который я мог бы просто скопировать, запустить и сразу увидеть в чем проблема?
Создаю индекс:
PUT twit
{
"mappings": {
"tweet": {
"properties": {
"message": {
"type": "nested"
},
"date":{
"type":"text"
}
}
}
}
}
Документ:
POST twit/1
{
"tweet":{
"message":{
"op":"ewr",
"ds":"ds"
},
"date":"ccv"
}
}
POST twit/2
{
"tweet":{
"message":{
"fdgd":"dgs",
"ds":"ds"
},
"date":"ccv"
}
}
Ответ:
{
"_index": "twit",
"_type": "1",
"_id": "AVtC3Rt_iqMx7bItF5QU",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}
GET twit/_search
{
"query": {
"constant_score": {
"filter": {
"exists": {
"field": "op"
}
},
"boost": 1.2
}
}
}
Ответ:
{
"took": 3939,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
Здесь я еще попробовала разные type, а в оригинале все документы лежат в одном.
Тут несколько проблем.
POST twit/1
создает документ с типом 1
и сгенерированным id
"tweet":{... }
на верхнем уровне не нужен, либо вам его надо добавить в меппинг.
для поиска nested объектов надо использовать специальный запрос nested
в 5.x constant_score
Со всеми этими
PUT twit
{
"mappings": {
"tweet": {
"properties": {
"message": {
"type": "nested"
},
"date":{
"type":"text"
}
}
}
}
}
PUT twit/tweet/1
{
"message": {
"op":"ewr",
"ds":"ds"
},
"date":"ccv"
}
PUT twit/tweet/2
{
"message":{
"fdgd":"dgs",
"ds":"ds"
},
"date":"ccv"
}
GET twit/_search
{
"query": {
"constant_score": {
"filter": {
"nested": {
"path": "message",
"query": {
"exists": {
"field": "message.op"
}
}
}
},
"boost": 1.2
}
}
}
Если у вас только один message на tweet, то он должен быть не nested
а object
и тогда пример будет выглядить так
PUT twit
{
"mappings": {
"tweet": {
"properties": {
"message": {
"type": "object"
},
"date":{
"type":"text"
}
}
}
}
}
PUT twit/tweet/1
{
"message": {
"op":"ewr",
"ds":"ds"
},
"date":"ccv"
}
PUT twit/tweet/2
{
"message":{
"fdgd":"dgs",
"ds":"ds"
},
"date":"ccv"
}
GET twit/_search
{
"query": {
"constant_score": {
"filter": {
"exists": {
"field": "message.op"
}
},
"boost": 1.2
}
}
}
system
(system)
Closed
May 4, 2017, 12:44pm
6
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.