Elasticsearch의 strings 배열에서 하나의 요소 만 반환

yAnTar

한 필드 "strArray"에 문자열 배열이 있습니다.

strArray: ['browser:IE', 'device:PC', 'country:USA', 'state:CA']

브라우저 (장치, 국가 또는 주)별로 집계가 필요합니다. strArray 필드에서 이러한 값의 순서를 안다면 문제가되지 않습니다.

이러한 구조를 사용할 수 있습니다.

"aggs": {
  "deviceAggs": {
    "terms": {
      "script": "doc['strArray'][1]"
    }
  }
}

그러나 문제는 이러한 문자열을 삽입하는 순서가 다를 수 있다는 것입니다.

어떻게 할 수 있습니까? 몇 가지 방법에 대해 생각합니다.

  1. 스크립팅-하위 문자열과 같은 기능을 사용하고 "올바른"값만 가져옵니다.

  2. 필터링-배열에서 하나의 값 ( "device :"문자열 포함)을 필터링 할 수 있습니다.

  3. strArray 값을 정렬하여 모든 값을 명확한 순서로 배치하지만 "정렬"하면 이상한 결과가 나타납니다. 필터링없이 하나의 요소 만 반환합니다.

구조 키 : 값이 있으면 왜 내가이 구조를 가지고 있는지 묻지 마십시오 (이것은 내 선택이 아닙니다). 우리는 문제가 없을 것입니다.

Vineeth Mohan

스크립팅은 여기서 만 직접 가능합니다. 집계에서 스크립팅을 사용하는 방법에 대한 아이디어를 얻으려면이 블로그를 참조하십시오 .

아래와 같은 것이 작동합니다.

for(element in doc['strArray'].values){
      if(element.startsWith('browser')){
          return element;
      }
};
return null;

정렬과 필터링은 모두 요소 수준이 아닌 문서 수준에서 수행됩니다. 요소 수준에서이 배열을 nested로 만들 수 있으면 필터링이 가능합니다. 먼저 구조를 다음과 같이 변경해야합니다.

strArray: [
  { "name" : 'browser:IE' } , 
  { "name" : 'device:PC' } 
 ]

그런 다음 strArray 필드를 중첩으로 만듭니다. 이 경우 접두사 쿼리 (쿼리 필터 사용)를 기반으로 중첩 된 필터를 수행 한 다음 데이터에 대해 중첩 된 집계를 수행 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #에서 배열의 요소 수를 반환하는 알고리즘을 어떻게 만드나요?

분류에서Dev

XQuery FLWOR 시퀀스에서 하나의 요소 만 반환

분류에서Dev

배열에서 하나의 항목 만 반환 됨

분류에서Dev

배열에서 하나의 항목 만 반환 됨

분류에서Dev

메서드의 배열 요소 및 배열에 값 반환

분류에서Dev

Mongodb 배열 내에서 일치하는 요소 만 반환

분류에서Dev

mongo 쉘 : 중첩 배열의 요소 1 개만 반환

분류에서Dev

대괄호없이 배열의 요소 만 반환 Ruby

분류에서Dev

JavaScript에서 하나의 요소 배열 또는 빈 배열 반환 모범 사례

분류에서Dev

Hibernate manyToMany는 하나의 요소 만 반환합니다.

분류에서Dev

Mongoose에서 및 배열에서 하나의 요소 만 가져옵니다.

분류에서Dev

배열 기반 문서를 정렬하고 결과의 첫 번째 요소 만 반환하는 방법

분류에서Dev

요소의 값과 JavaScript에서 반복 된 횟수로 하위 배열의 배열을 만듭니다.

분류에서Dev

DLL C #에서 2 차원 배열 요소의 합계 반환

분류에서Dev

배열 해시의 요소에서 값 반환

분류에서Dev

특정 값을 포함하는 객체의 배열 요소 만 반환

분류에서Dev

SQL에서 반환 된 배열의 값을 하나만 변경합니다.

분류에서Dev

내 asynctask에 하나의 배열 요소 만 전달됩니다.

분류에서Dev

ElasticSearch는 단일 문서 배열의 요소를 반환 할 수 있습니까?

분류에서Dev

정의 된 배열 요소의 하위 문자열로 정의 된 범위에서 하위 배열 반환

분류에서Dev

파이썬에서 배열의 특정 요소 만 영구 변환

분류에서Dev

div 내에서 하나의 요소 만 가운데에 배치

분류에서Dev

배열의 마지막 요소 만 반환하고 모든 요소를 가져 오지 않는 방법

분류에서Dev

배열 _ JavaScript의 요소 조합에서 새 배열 만들기

분류에서Dev

다른 배열의 요소에서 배열 만들기

분류에서Dev

배열에서 counts 요소의 배열 만들기

분류에서Dev

데이터 배열에서 첫 번째 요소 만 반환하는 검색 창

분류에서Dev

jq의 중첩 요소 배열에 추가하지만 루트 객체를 반환합니다.

분류에서Dev

Javascript는 빈 배열을 반환하지만 그 안에 두 개의 요소가 있습니다.

Related 관련 기사

  1. 1

    C #에서 배열의 요소 수를 반환하는 알고리즘을 어떻게 만드나요?

  2. 2

    XQuery FLWOR 시퀀스에서 하나의 요소 만 반환

  3. 3

    배열에서 하나의 항목 만 반환 됨

  4. 4

    배열에서 하나의 항목 만 반환 됨

  5. 5

    메서드의 배열 요소 및 배열에 값 반환

  6. 6

    Mongodb 배열 내에서 일치하는 요소 만 반환

  7. 7

    mongo 쉘 : 중첩 배열의 요소 1 개만 반환

  8. 8

    대괄호없이 배열의 요소 만 반환 Ruby

  9. 9

    JavaScript에서 하나의 요소 배열 또는 빈 배열 반환 모범 사례

  10. 10

    Hibernate manyToMany는 하나의 요소 만 반환합니다.

  11. 11

    Mongoose에서 및 배열에서 하나의 요소 만 가져옵니다.

  12. 12

    배열 기반 문서를 정렬하고 결과의 첫 번째 요소 만 반환하는 방법

  13. 13

    요소의 값과 JavaScript에서 반복 된 횟수로 하위 배열의 배열을 만듭니다.

  14. 14

    DLL C #에서 2 차원 배열 요소의 합계 반환

  15. 15

    배열 해시의 요소에서 값 반환

  16. 16

    특정 값을 포함하는 객체의 배열 요소 만 반환

  17. 17

    SQL에서 반환 된 배열의 값을 하나만 변경합니다.

  18. 18

    내 asynctask에 하나의 배열 요소 만 전달됩니다.

  19. 19

    ElasticSearch는 단일 문서 배열의 요소를 반환 할 수 있습니까?

  20. 20

    정의 된 배열 요소의 하위 문자열로 정의 된 범위에서 하위 배열 반환

  21. 21

    파이썬에서 배열의 특정 요소 만 영구 변환

  22. 22

    div 내에서 하나의 요소 만 가운데에 배치

  23. 23

    배열의 마지막 요소 만 반환하고 모든 요소를 가져 오지 않는 방법

  24. 24

    배열 _ JavaScript의 요소 조합에서 새 배열 만들기

  25. 25

    다른 배열의 요소에서 배열 만들기

  26. 26

    배열에서 counts 요소의 배열 만들기

  27. 27

    데이터 배열에서 첫 번째 요소 만 반환하는 검색 창

  28. 28

    jq의 중첩 요소 배열에 추가하지만 루트 객체를 반환합니다.

  29. 29

    Javascript는 빈 배열을 반환하지만 그 안에 두 개의 요소가 있습니다.

뜨겁다태그

보관